Python - Combinig pandas数据帧

时间:2017-03-14 14:47:57

标签: python pandas dataframe

我想要合并3个数据帧。它们看起来像这样:

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

我希望前两个df-s基于col1合并到第三个df中,因此所需的输出是

df3
col1 col3 col2
1    some 5
2    data 9

我怎样才能做到这一点?我在尝试:

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的{​​{1}}值。这样做的方法是什么?请注意,简单的df2不起作用,因为concat中还有其他数据,而不仅仅是df3

1 个答案:

答案 0 :(得分: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']})