我有一个包含Origin,Destination和其他数据点的大型数据框。如何有效地选择具有感兴趣的Origin,Destination对的行,即我有另一个感兴趣的数据帧。
df = pd.DataFrame({'Origin' : ['A','A','A','B','B','A'],
'Destination' :['B','C','D','C','D','D'],
'X' : ['a','b', 'c', 'd', 'e', 'f']})
I = pd.DataFrame({'Origin' : ['A','A','B'], 'Destination' : ['B','D','C']})
我想回来
Origin Destination X
0 A B a
1 A D c
2 B C d
3 A D f
答案 0 :(得分:2)
使用merge
与默认inner
联接,如果DataFrames
参数on
中只有相同的已加入列可以省略:
print (pd.merge(df,I))
Destination Origin X
0 B A a
1 D A c
2 D A f
3 C B d
如果需要重新排序列:
print (pd.merge(I,df)[['Origin','Destination','X']])
Origin Destination X
0 A B a
1 A D c
2 A D f
3 B C d
如果更多具有相同名称的列添加on
:
print (pd.merge(I,df, on=['Origin','Destination'])[['Origin','Destination','X']])
Origin Destination X
0 A B a
1 A D c
2 A D f
3 B C d
感谢Boud提出建议:
print (df.merge(I))
Destination Origin X
0 B A a
1 D A c
2 D A f
3 C B d