如果列的组合来自Python Pandas中的其他数据框,请选择行

时间:2017-01-17 18:16:58

标签: python pandas

我有一个包含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

1 个答案:

答案 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