映射熊猫数据框中的列

时间:2019-02-02 12:08:08

标签: python pandas

我正在尝试根据另一个数据框映射一个数据框中的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之间的区别,或者是否应该替换。

预先感谢

2 个答案:

答案 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