I have two dataframes:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B7', 'B4', 'B0', 'B3'] })
df2 = pd.DataFrame({'A': ['A4', 'A3', 'A7', 'A8'],'B': ['B0', 'B1', 'B2', 'B3']})
我需要从 B
列中获取所有公共(public)值,所以这里是 B0
和 B3
。
使用 df1.B.isin(df2.B)
给我 False False True True
,但不是值列表。
最佳答案
你需要boolean indexing
:
print (df1[df1.B.isin(df2.B)])
A B
2 A2 B0
3 A3 B3
print (df1.ix[df1.B.isin(df2.B), 'B'])
2 B0
3 B3
Name: B, dtype: object
print (df1.ix[df1.B.isin(df2.B), 'B'].tolist())
['B0', 'B3']
另一种解决方案 merge
:
print (pd.merge(df1,df2, on='B'))
A_x B A_y
0 A2 B0 A4
1 A3 B3 A8
print (pd.merge(df1,df2, on='B')['B'])
0 B0
1 B3
Name: B, dtype: object
关于python - 如何使用 Pandas 从一个数据框中的另一个数据框中查找值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464636/