Python pandas:使用列名称向数据框添加不同长度的不同数据帧

时间:2016-11-16 18:37:19

标签: python pandas dataframe add

假设我有一个包含三列的主数据框

df_A = pd.DataFrame([2,3,4,6,7,11],columns = ['A'])
df_B = pd.DataFrame([2,3,4],columns = ['B'])
df_C = pd.DataFrame([2,3,4,5,6,7,8,9,10],columns = ['C'])

我还有其他三个数据帧,每个数据帧只有一列,但长度不同。

    A   B   C
0   7   7   7
1   2   2   2
2   3   3   3
3   4   4   4
4   6   NaN 5
5   7   NaN 6
6   11  NaN 7
7   NaN NaN 8
8   NaN NaN 9
9   NaN NaN 10

如何根据列名将这些数据框中的每一个添加到主数据框中。所以输出就像这样

{{1}}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

import pandas as pd

df3 = pd.DataFrame({'A': [7],'B': [7],'C': [7]})
df_A = pd.DataFrame([2,3,4,6,7,11],columns = ['A'])
df_B = pd.DataFrame([2,3,4],columns = ['B'])
df_C = pd.DataFrame([2,3,4,5,6,7,8,9,10],columns = ['C'])

df_main = pd.concat([df_A, df_B, df_C], axis=1)
newdf = df3.append(df_main).reset_index(drop=True)
newdf

在使用concat之前,您不必创建空数据帧。

pandas documents to read

答案 1 :(得分:1)

试试这个:

In [187]: pd.concat([df, df_A.join(df_B, how='outer').join(df_C, how='outer')])
Out[187]:
      A    B   C
0   7.0  7.0   7
0   2.0  2.0   2
1   3.0  3.0   3
2   4.0  4.0   4
3   6.0  NaN   5
4   7.0  NaN   6
5  11.0  NaN   7
6   NaN  NaN   8
7   NaN  NaN   9
8   NaN  NaN  10