2017-03-14 5 views
0

私は結合したい3つのデータフレームを持っています。所望の出力がPython - Combinig pandas dataframes

df3 
col1 col3 col2 
1 some 5 
2 data 9 

どのように私はこれを達成できているので、私は、col1に基づいて、第3 DFにマージする最初の2 DF-Sを希望

df1  |df2  |df3 
col1 col2 |col1 col2 |col1 col3 
1 5  2 9  1 some 
         2 data 

:彼らはこのようになります?私がしようとしている。このため

df3['col2'] = df1[df1.col1 == df3.col1].col2 if df1[df1.col1 == df3.col1].col2 is not None else df2[df2.col1 == df3.col1].col2 

は私がValueError: Series lengths must match to compare

は、df3col1値はどちらかdf1またはdf2に存在していることを、保証され得ます。これを行う方法は何ですか?単純なconcatは、他のデータがdf3にあり、それだけでなく、col1であるため、動作しません。

+1

あなたが行うことができますIIUC 'df3.merge(df1、on = 'col 1 '、how =' outer ')。merge(df2、on =' col1 '、how =' outer ') ' – EdChum

答えて

1

df1df2col1で重複していない場合、あなたはこれを試すことができますが:

pd.concat([df1, df2]).merge(df3) 

enter image description here


データ

df1 = pd.DataFrame({'col1': [1], 'col2': [5]}) 
df2 = pd.DataFrame({'col1': [2], 'col2': [9]}) 
df3 = pd.DataFrame({'col1': [1,2], 'col3': ['some', 'data']}) 
関連する問題