比较数据框输出中的行并打印并识别差异

时间:2019-09-19 17:30:08

标签: python pandas

我正在尝试比较两个csv文件并返回差异。但是,我需要以某种方式指出差异,方法是通过颜色编码,与其比较的两行下方的False语句,或另外一个列来指出具有差异的列。

我当前正在使用Pandas的dropplicate函数来返回非重复行,它们是区别。然后,我按值对数据框进行排序,以便将相似的行组合在一起。此方法将600行缩减为4行,并将相似的行组合在一起。我能够使用line1 == line2比较前两行,并且它返回一个布尔值。我当时在考虑利用布尔值突出显示不同的值,但不确定如何做到这一点。

到目前为止,这是我的代码:

import pandas as pd
import numpy as np
import os, sys, csv

Columns= ['CustomerName','CustomerAddress','CustomerID','CostomerPhone','CustomerZip','CustomerOpenDate','CustomerClosedDate']

InDataCustomerYesterday = pd.read_csv('/Users/JoeDirt/Documents/Customer_NAN_YYYYMMDD.csv', sep=',', index_col=None, dtype='str', names=Columns, header=3, encoding='ANSI') #dtype='str', encoding='ANSI')

InDataCustomerToday = pd.read_csv('/Users/JoeDirt/Documents/Customer_NAN_YYYYMMDD.csv', sep=',', index_col=None, dtype='str', names=Columns, header=3, encoding='ANSI')

#Combine Files
CombinedData= InDataCustomerYesterday .append(InDataCustomerToday)

# Compare Account Data and Only show the differences;
CombinedData.drop_duplicates(keep=False, inplace=True)

#Sort Data in Dataframe by CustomerID
CombinedData.sort_values('CustomerID', inplace=True)

我尝试过

def Diff(li1, li2): 
    li_dif = [i for i in li1 + li2 if i not in li1 or i not in li2] 
    return li_dif 

li1 = 0
li2 = 1

line1 = CombinedData.iloc[li1,:]
line2 = CombinedData.iloc[li2,:]

但是我不确定如何将昨天的行与今天的行进行比较并指出差异。

0 个答案:

没有答案