比较两个Excel文件的Python代码

10 浏览
0 Comments

比较两个Excel文件的Python代码

我有两个Excel文件中的数据,如下所示:

示例数据集创建:

df1 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [1, 1, 2]}
df1 = pd.DataFrame(df1, columns=df1.keys())
df2 =  {'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [2, 1, 2]}
df2 = pd.DataFrame(df2, columns=df2.keys())

请帮我得到两个Excel文件的差异,如下所示:

Transaction_name    Count_df1        Count_df2
SC-001_Homepage          1              2
SC-001_Homepage          1              1
SC-001_Homepage          2              2

输出的第一行计数不匹配。我能用不同的颜色突出显示吗?示例代码如下:

#比较两个Excel文件
df1 = pd.read_csv(r"WLMOUTPUT.csv", dtype=object)
df2 = pd.read_csv(r"results.csv", dtype=object)
print('\n', df1)
print('\n',df2)
df1['Compare'] = df1['Transaction_Name'] + df1['Count'].astype(str)
df2['Compare'] = df2['Transaction_Name'] + df2['Count'].astype(str)
print('\n', df1.loc[~df1['Compare'].isin(df2['Compare'])])

提前感谢。

0
0 Comments

比较两个Excel文件的出现的原因是想要找出它们之间不同的行,特别是在某些列中的数值不同。解决方法是使用Python中的pandas库,具体步骤如下:

1. 首先导入pandas库,并创建两个DataFrame对象df1和df2,分别表示两个Excel文件的数据。每个DataFrame包含两列,分别是Transaction_Name和Count,其中Transaction_Name列存储交易名称,Count列存储对应交易的数量。

import pandas as pd
df1 = pd.DataFrame({'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [1, 1, 2]}) 
df2 = pd.DataFrame({'Transaction_Name':['SC-001_Homepage', 'SC-002_Homepage', 'SC-001_Signinlink'], 'Count': [2, 1, 2]})

2. 使用merge函数将df1和df2按照Transaction_Name列进行合并,使用suffixes参数来区分两个DataFrame的列名。合并后得到一个新的DataFrame对象merged_df。

merged_df = pd.merge(df1, df2, on='Transaction_Name', suffixes=('_df1', '_df2'))

3. 使用子集操作(subsetting)来找出Count_df1列和Count_df2列不相等的行,即找出Count数值不同的行。将这些行存储到一个新的DataFrame对象diff中。

diff = merged_df[merged_df['Count_df1'] != merged_df['Count_df2']]

4. 打印diff,即可得到Count数值不同的行。

print(diff)
   Count_df1 Transaction_Name  Count_df2
0          1  SC-001_Homepage          2

5. 如果还想找出在df2中缺少的交易名称,可以在合并两个DataFrame时指定outer选项。这样,在merged_df中,df2缺少的交易名称将显示为NaN。可以使用isnull函数和any函数来找到只包含NaN的行,即找到缺少的交易名称。

merged_df = pd.merge(df1, df2, on='Transaction_Name', suffixes=('_df1', '_df2'), how='outer')
missing_transactions = merged_df[merged_df.isnull().any(axis=1)]

通过以上步骤,我们可以使用Python的pandas库来比较两个Excel文件,并找出它们之间的差异。这对于数据分析和数据清洗非常有用。

0