我正在尝试根据另一个数据框映射一个数据框中的2列。
第一个数据帧df1具有以下结构:
ID1 ID2 check_ID
1 jason becky 1
2 becky tina 1
3 becky joe 1
4 jason joe 2
5 jason becky 2
第二个数据帧df2具有以下结构:
ID check_ID answer
1 jason 1 yes
2 becky 1 yes
3 tina 1 no
4 joe 1 yes
5 jason 2 no
6 joe 2 no
7 becky 2 no
我正在寻找的输出是:
ID1 ID2 check_ID answer_ID1 answer_ID2
1 jason becky 1 yes yes
2 becky tina 1 yes no
3 becky joe 1 yes yes
4 jason joe 2 no no
5 jason becky 2 no no
因此,answer_ID1对应于df2中的ID1和check_ID,同样,answer_ID2对应于ID2和check_ID。
做到这一点的最佳方法是什么?我不太了解map和apply之间的区别,或者是否应该替换。
预先感谢
答案 0 :(得分:1)
您可以在数据框列上使用带有内部联接的合并
df.merge(df1,left_on=['ID1','check_ID'],right_on=['ID','check_ID'],how='inner')
**编辑**
df.merge(df1.rename(columns={'ID':'ID1'}),left_on=['ID1','check_ID'],right_on=['ID1','check_ID'],how='inner')
出局:
ID1 ID2 check_ID answer
0 jason becky 1 yes
1 becky tina 1 yes
2 becky joe 1 yes
3 jason joe 2 no
4 jason becky 2 no
答案 1 :(得分:0)
您必须像这样加入他们
df1.set_index('key').join(df2.set_index('key'))
df1中的密钥显示ID1,而df2中的密钥显示ID