pandas 如何使用Python将Excel电子表格中的两列与另一个电子表格中的两列相匹配?

tzcvj98z  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(126)

我试图使用Python来显示一个电子表格中两列的单元格中的值与另一个电子表格中两列的值之间的差异。
要求如下:在Example1.xlsx中,对于Col 1 =“A”中的所有值,将Col 2中的值与Example2.xlsx中的行进行比较,其中Col 1 =“A”且Col 2与Example1.xlsx中的相应值不匹配
我能够让pandas匹配一列,但不确定如何让它匹配两列。
Example1.xlsx

Col1 Col2 Col3 Col4
A     1    abc    def
B     1    abc    xyz
A     9    def    uvw

字符串
Example2.xlsx

Col1 Col2 Col3 Col4
A     1    jkj   kjk
X     9    jka   abc


结果:

A     9    def    uvw (since in Example1.xlsx Col1=A and Col2=9 but there is no corresponding set of values in Example2.xlsx)


到目前为止,我尝试了:

import pandas as pd
df1=pd.read_excel("Example1.xlsx)
df2=pd.read_excel("Example2.xlsx)

df1\['Col1'.values + df1\['Col2'\].values != df2\['Col1'.values + df2\['Col2'\].values


但我得到一个错误,“+”在这里无效
任何建议将不胜感激!

bz4sfanl

bz4sfanl1#

选项一:

您可以在'Col1'和'Col2'上执行左合并,然后根据第二个 Dataframe 的列中具有NaN的行(表示未找到匹配项)筛选结果:

import pandas as pd

df1 = pd.read_excel("Example1.xlsx")
df2 = pd.read_excel("Example2.xlsx")

merged = df1.merge(df2, on=['Col1', 'Col2'], how='left', indicator=True)

result = merged[merged['_merge'] == 'left_only']

result = result[df1.columns]

print(result)

字符串

选项二:

在两个数据框架中创建一个新列,该列是“Col1”和“Col2”值的组合。这将允许您根据这些组合值比较两个 Dataframe 之间的行。然后,您可以根据df2中不存在的组合值过滤df1。

import pandas as pd

df1 = pd.read_excel("Example1.xlsx")
df2 = pd.read_excel("Example2.xlsx")

df1['combined'] = df1['Col1'] + df1['Col2'].astype(str)
df2['combined'] = df2['Col1'] + df2['Col2'].astype(str)

result = df1[~df1['combined'].isin(df2['combined'])]

result.drop('combined', axis=1, inplace=True)

print(result)

相关问题