我想将一个数据帧映射到另一个数据帧,尽管它不是那么简单,因为我使用2个条件来执行映射-我将在下面解释它们。基本上,我想做的是给定两个数据帧df1和df2,这样:
df1:
A B Type
Heart Spades Boo
Heart Clubs Fog
Spades Diamonds Bler
df2:
A B Boo Fog Bler
Heart Spades True True True
Spades Diamonds True False True
Heart Spades True True False
我可以将'Boo','Fog,'Bler'列中包含的值映射到df1中名为'Verification'的新列中,结果是:
A B Type Verification
Heart Spades Boo True
Heart Clubs Fog
Spades Diamonds Bler True
然后,要执行此过程,我需要满足2个条件:A和B列的df1中的值和df2中的值必须相等-因为它们充当键,并且映射应采用基于df1类型的值的df2某列中的值。我遇到两个困难:
您有什么建议吗?
答案 0 :(得分:2)
在melt
上尝试drop_duplicates
和df2
。最后,将merge
df1留给melt
和drop_duplicates
df_final = (df1.merge(df2.melt(['A','B'], var_name='Type', value_name='Verification')
.drop_duplicates(['A','B','Type']), how='left'))
Out[240]:
A B Type Verification
0 Heart Spades Boo True
1 Heart Clubs Fog NaN
2 Spades Diamonds Bler True
注意:在df2
上,bler
(第二行)的Spades Diamonds
的值为True
,因此其{{1} }在输出中为Verification