Pandas:合并数据帧而不创建新列

2024-04-24 13:04:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列相同的数据帧:

df1 = pd.DataFrame([['Abe','1','True'],['Ben','2','True'],['Charlie','3','True']], columns=['Name','Number','Other'])
df2 = pd.DataFrame([['Derek','4','False'],['Ben','5','False'],['Erik','6','False']], columns=['Name','Number','Other'])

它给出了:

^{pr2}$

以及

    Name Number  Other
0  Derek      4  False
1    Ben      5  False
2   Erik      6  False

我想要一个输出数据帧,它是基于“Name”的二者的交集:

output_df = 
        Name Number  Other
    0    Ben      2  True
    1    Ben      5  False

我尝试过一个基本的熊猫合并,但回报并不理想:

pd.merge(df1,df2,how='inner',on='Name') = 
 Name Number_x Other_x Number_y Other_y
0  Ben        2    True        5   False

这些数据帧相当大,所以我更喜欢使用熊猫魔术来保持速度。在


Tags: columns数据namefalsetruenumberdataframederek
1条回答
网友
1楼 · 发布于 2024-04-24 13:04:02

您可以使用^{},然后使用^{}^{}与{a3}一起过滤:

val = np.intersect1d(df1.Name, df2.Name)
print (val)
['Ben']

df = pd.concat([df1,df2], ignore_index=True)
print (df[df.Name.isin(val)])
  Name Number  Other
1  Ben      2   True
4  Ben      5  False

关于val的另一个可能的解决方案是intersection的集合:

^{pr2}$

那么可以将索引重置为单调:

^{3}$

相关问题 更多 >