遍历列以一次比较一个数据帧中的两列,并根据每个比较结果添加一个摘要列

时间:2018-11-06 10:50:41

标签: python pandas if-statement matching data-comparison

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):

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
    Case 4, 5, 6 'if user entered data in columns D to F
    Max_date = Application.WorksheetFunction.Max(Range(Cells(Target.Row, 4), Cells(Target.Row, 6)))
    'get the max value in row from column D to F (4 to 6)
    Max_date = CDate(Max_date)

    DueDate = DateAdd("yyyy", 3, Max_date)

    Cells(Target.Row, 3) = DueDate
End Select
End Sub

如果只想在 Status1和Status2 两列上写 ifif ,就可以了,如果想写 ifelif ,就很冗长了>在2列以上。如果我也有 Status3 列,能否在几行代码中获得所需的输出?

1 个答案:

答案 0 :(得分:0)

使用pandas.merge

将两个csv读入熊猫

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%