-3

df1.csv

df2.csv

执行下面的代码后,

df1.merge(df2, on=['Customer_id'], indicator='Status', how='outer')

我明白了,

df3.csv

现在我想比较 Name_x 中的所有元素是否等于 Name_y,对于其他列也是如此。我正在做的是单独比较它。这是我的代码:

df3.assign(Status1=df3.Name_x == df3.Name_y)

df3.assign(Status2=df3.Age_x == df3.Age_y)

等等

完成上述操作后,我得到,

df4.csv

我可以写for循环,这样我就不必写代码了

df3.assign()

单独比较每两列?

最重要的是我的最终状态栏应该是这样的,

输出

我正在做的是想写如果 elif是这样的:

定义 f(行):

if row['Status1'] == 'True' and row['Status2'] == 'False':
    val = 'Matching for column {Name}'
elif row['Status1'] == 'False' and row['Status1'] == 'True':
    val = 'Matching for column {Age}
elif row['Status1'] == 'False' and row['Status1'] == 'False':
    val = 'Not Matching at all' #and so on...
return val

如果一个人只想 在两列Status1 和 Status2上写if elif是可以的,如果一个人想在超过 2 个列上写if elif就会变得冗长。如果我也有Status3列,我可以用几行代码获得所需的输出吗?

4

1 回答 1

1

使用 pandas.merge

将两个 csv 读入 pandas

df1=pd.Dataframe.from_csv('file')
df2=pd.Dataframe.from_csv('file2')

然后使用“外部”连接合并

df3=pd.merge(df1,df2,on=[key1,key2 etc], how="outer", indicator=True) 

此时你应该完成了 90%

于 2018-11-06T11:47:17.620 回答