我有两个具有相同功能的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
我该怎么做?
答案 0 :(得分:2)
假设您的数据框架为df1
和df2
,您可以将它们合并到客户身上:
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