如何连接具有特殊条件的两个表

时间:2018-04-28 09:48:48

标签: python python-3.x pandas

我有两个具有相同功能的DataFrame:

 customer_id    Class    value  
 1              A        13  
 2              A        14   
 3              B        15

 customer id    Class    value
 1              A        16
 2              B        17
 3              B        18
 4              A        20   

现在我需要1个DataFrame,其中一个包括客户将他们的班级从A更改为B

 customer_id    Class    value
 2              B        17

我该怎么做?

2 个答案:

答案 0 :(得分:2)

假设您的数据框架为df1df2,您可以将它们合并到客户身上:

before_after = pd.merge(df1, df2, on='customer', how='left', suffixes=('_before', '_after'))

然后检查哪个已从'A'更改为'B'

before_after[(before_after.id_before == 'A') & (before_after.id_after == 'B')]

答案 1 :(得分:2)

您可以在过滤第二个数据帧之前执行映射:

df2['Class_original'] = df2['customer_id'].map(df1.set_index('customer_id')['Class'])

res = df2[(df2['Class_original'] == 'A') & (df2['Class'] == 'B')]

print(res)

   customer_id Class  value Class_original
1            2     B     17              A