比较两个Excel文件的Python代码
比较两个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'])])
提前感谢。
比较两个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文件,并找出它们之间的差异。这对于数据分析和数据清洗非常有用。