用Python比较两个excel文件

用Python比较两个excel文件,python,pandas,Python,Pandas,我有两个excel文件中的数据,如下所示 创建的示例DS: 请帮我找出两个卓越的区别,如下所示 Transaction_name Count_df1 Count_df2 SC-001_Homepage 1 2 SC-001_Homepage 1 1 SC-001_Homepage 2 2 输出计数的第一行不匹配。我能用不同的颜色突出显示吗?示例

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

创建的示例DS: 请帮我找出两个卓越的区别,如下所示

Transaction_name    Count_df1        Count_df2
SC-001_Homepage          1              2
SC-001_Homepage          1              1
SC-001_Homepage          2              2
输出计数的第一行不匹配。我能用不同的颜色突出显示吗?示例代码如下所示

#COmparing both excels
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'])])

提前感谢

您可以使用
合并
功能

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]})

merged_df = pd.merge(df1, df2, on = 'Transaction_Name', suffixes=('_df1', '_df2'))
这将为您提供以下数据帧:

print(merged_df)

   Count_df1   Transaction_Name  Count_df2
0          1    SC-001_Homepage          2
1          1    SC-002_Homepage          1
2          2  SC-001_Signinlink          2
然后您可以使用子集来查看哪些行具有不同的计数:

diff = merged_df[merged_df['Count_df1'] != merged_df['Count_df2']]
你会得到这个:

print(diff)

   Count_df1 Transaction_Name  Count_df2
0          1  SC-001_Homepage          2

您必须展示到目前为止所做工作的示例。请查找我到目前为止为实现结果所做的工作#格式化WLM data data=pd.read_excel(r“脚本坐标比较”_edited123.xlsx),sheet_name='WLM',dtype=object)data=pd.DataFrame(data,columns=data.keys())df=pd.melt(data,id_vars=['Script\u name'],value_name='Count')df['Transaction_name']=df['Script_name']+'.''.+df['variable']Final_df=df['Transaction_name',Count']]Final_df.to_csv(r'WLMOUTPUT.csv',index=False)代码在下一个注释中继续比较两个csv文件您必须在问题中提供的文件,您可以对其进行编辑以进行相应调整,您还需要格式化您的text@SwethaGorantla没有人回答的原因是这里的信息太多了。我建议您只发布5-6行示例数据,以数据帧格式描述您试图实现的内容,以便我们可以复制数据并复制问题,以及2行解释、示例代码(不是完整的,只是有用的部分)和预期输出,仅此而已。:)Check按解释编辑了问题,请检查一次。感谢Luc Blassel,我可以实现它并获得所需的输出。如果有任何交易丢失,请您帮助我如何捕获它。例如,在df1中有3个事务和它的计数,在df2中只有2个事务和它的计数。如何找到df2中缺少的一个事务?在合并两个数据帧时,可以指定
outer
选项:
merged\u df=pd.merge(df1,df2,on='transaction\u Name',后缀=('u df1','u df2'),How='outer'))
an然后,当其中一个DFs中缺少一个事务时,它将在
merged\u df
中显示为
NaN
。如果这回答了你的问题,请考虑接受它作为答案。正如你所说的,它给楠在失踪的交易,它也给出了完整的输出。是否可以只获取df2中缺少的事务名称,如下所示。。。事务\u Name Count\u df1 Count\u df2 0 SC-001\u AppLaunch\u Signed 0 NaNFrom您可以使用
merged\u df[merged\u df.isnull().any(axis=1)]获取只有
NaN
的行
print(diff)

   Count_df1 Transaction_Name  Count_df2
0          1  SC-001_Homepage          2