Python 由不同数据帧的唯一值组成的新数据帧
我有两个数据帧:Python 由不同数据帧的唯一值组成的新数据帧,python,pandas,numpy,Python,Pandas,Numpy,我有两个数据帧: df1 = a b 1 555 2 555 4 555 4 555 5 555 6 555 7 555 8 555 15 555 1 555 及 我想在两个数据框之间找到列a的相同值,并将它们放入新的数据框中(也包括其他列的值。这里是b) 期望输出为: df3 = a b 2 555 2 666 2 666 4 555 4 555 4 666
df1 =
a b
1 555
2 555
4 555
4 555
5 555
6 555
7 555
8 555
15 555
1 555
及
我想在两个数据框之间找到列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')
但它给了我一些不同的东西大致上,这将解决您的问题:
(pd.concat((df1[df1.a.isin(df2.a)],
df2[df2.a.isin(df1.a)]),
ignore_index=True)
.sort_values('a'))
# a b
#0 2 555
#4 2 666
#5 2 666
#8 2 666
#1 4 555
#2 4 555
#6 4 666
#3 5 555
#7 5 666
使用:
或:
这与其他解决方案没有太大区别
set1=set(df1[“a”].tolist())
set2=set(df2[“a”].tolist())
inter=列表(集合1.交叉点(集合2))
df3=pd.concat([df1[df1[“a”].isin(内部)],
df2[df2[“a”].isin(内部)],
忽略(索引=真)
你说“唯一值”是什么意思?这个问题对我来说不是100%清楚。是否希望df3
仅包含列a
中的值同时位于排序交叉点df1
和df2
中的行?
(pd.concat((df1[df1.a.isin(df2.a)],
df2[df2.a.isin(df1.a)]),
ignore_index=True)
.sort_values('a'))
# a b
#0 2 555
#4 2 666
#5 2 666
#8 2 666
#1 4 555
#2 4 555
#6 4 666
#3 5 555
#7 5 666
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