在给定列的交集上合并两个数据框。

4
我可以帮您翻译。以下是翻译结果:

我希望在“Name”列的交集上合并以下两个数据框。

假设数据框1如下:

     Name subject_id  Marks_scored
0   Billy       sub1            98
1     Amy       sub2            90
2    Bran       sub4            87
3   Alice       sub6            69
4  Ayoung       sub5            78

数据帧 2 如下:

    Name subject_id  Marks_scored
0  Billy       sub2            89
1  Brian       sub4            80
2   Bran       sub3            79
3  Bryce       sub6            97
4  Betty       sub5            88

我只想要输出:

    Name subject_id  Marks_scored
0  Billy       sub1            98
1   Bran       sub4            87
2  Billy       sub2            89
3   Bran       sub3            79
2个回答

5

pd.concat([df1, df2], axis=1, join='inner')

这行代码是将两个数据框按照列方向拼接在一起,并只保留两个数据框中共有的列。

OR

pd.merge(df1, df2, on='subject_id', how='inner')

这行代码是将两个数据框按照指定列(subject_id)进行合并,并只保留两个数据框中都存在的subject_id。


如果你想要右连接,使用how='right',如果你想要左连接,使用how='left'。 - Marcos Marques
2
我认为这两个都没有给出期望的输出结果。 - ALollz

1
尝试使用pd.concat,然后使用duplicated和布尔索引:
df_out = pd.concat([df1,df2])
df_out[df_out.duplicated('Name', keep=False)]

输出:

    Name subject_id  Marks_scored
0  Billy       sub1            98
2   Bran       sub4            87
0  Billy       sub2            89
2   Bran       sub3            79

2
如果在给定的数据框中,名称可以重复,那么可能会返回df_out[df_out.Name.isin(set(df1.Name) & set(df2.Name))] - ALollz
是的,太好了,这比第一个更好,因为它解决了在同一个数据帧中有重复的“Name”的问题,谢谢。 - Chaymae Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接