循环列以在数据框中一次比较两列,并根据每个比较结果添加一个摘要列
Loop over columns to compare two columns at a time in a dataframe and add one summary column based on each comparison result
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()
分别比较每两列?
最重要的是我的最终状态列应该如下所示,
output
我正在做的是想这样写 if elif:
def f(row):
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 是可以的,如果想写的话会变得冗长if elif 超过 2 列。如果我还有 Status3 列,我可以在几行代码中获得所需的输出吗?
使用pandas.merge
将两个 csv 读入 pandas
df1=pd.Dataframe.from_csv('file')
df2=pd.Dataframe.from_csv('file2')
然后使用 "outer" 合并合并
df3=pd.merge(df1,df2,on=[key1,key2 etc], how="outer", indicator=True)
此时你应该已经完成了 90%
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()
分别比较每两列?
最重要的是我的最终状态列应该如下所示,
output
我正在做的是想这样写 if elif:
def f(row):
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 是可以的,如果想写的话会变得冗长if elif 超过 2 列。如果我还有 Status3 列,我可以在几行代码中获得所需的输出吗?
使用pandas.merge
将两个 csv 读入 pandas
df1=pd.Dataframe.from_csv('file')
df2=pd.Dataframe.from_csv('file2')
然后使用 "outer" 合并合并
df3=pd.merge(df1,df2,on=[key1,key2 etc], how="outer", indicator=True)
此时你应该已经完成了 90%