首页 > 解决方案 > 由不同数据帧的唯一值组成的新数据帧

问题描述

我有两个数据框:

df1 = 
a   b
1   555
2   555
4   555
4   555
5   555
6   555
7   555
8   555
15  555
1   555

df2 = 
a   b
2   666
2   666
3   666
4   666
5   666
2   666
3   666
9   666

我想a在两个数据框之间找到相同的列值并将它们放入新的数据框(也包含其他列的值。这里是b)所需的输出是:

df3 = 
    a   b
    2   555
    2   666
    2   666
    4   555
    4   555
    4   666
    …

等等。

我试过了:

df3= pd.merge(df1, df2, on=['a'], how='inner')

但它给了我一些不同的东西

标签: pythonpandasnumpy

解决方案


采用:

df3= pd.concat([df1, df2], ignore_index=True)
df3 = df3[df3['a'].isin(np.intersect1d(df1['a'], df2['a']))]

或者:

idx = np.intersect1d(df1['a'], df2['a'])
df3 = pd.concat([df1[df1.a.isin(idx)], df2[df2.a.isin(idx)]], ignore_index=True)

print (df3)
   a    b
1  2  555
2  4  555
3  4  555
4  5  555
0  2  666
1  2  666
3  4  666
4  5  666
5  2  666

推荐阅读