2017-01-17 7 views
2

私は、原点、目的地および他のデータ点を持つ大きなデータフレームを持っています。興味のあるOr​​igin、Destinationのペアを持つ行を効率的に選択するにはどうすればいいですか?つまり、興味のあるペアがある別のデータフレームがあります。Python Pandasの他のデータフレームからの列の組み合わせの場合に行を選択

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']}) 

そして、私はデフォルトinnerバック

Origin Destination X 
0  A   B a 
1  A   D c 
2  B   C d 
3  A   D f 

答えて

2

使用mergeを返すようにしたいです参加し、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 
+0

私は@piRSquaredこの;-) – piRSquared

+0

に向上させることはできません - あなたに感謝。 – jezrael

+0

df.merge(I)勝利のために:-) – Boud

関連する問題