在pandas中添加具有不同列名的列

时间:2016-06-28 14:16:43

标签: pandas dataframe concatenation

嘿家伙大熊猫问题在这里,4个不同股票的最后400天的4个数据帧,要连接成一个,它们在不同的索引中,因为来自quandl的每个股票的原始拉动开始于数据的不同开始日期

每个数据框看起来都与此类似:

          a       b       c       d      e
545  539.00  558.00  535.00  539.00   6.50
546  549.00  550.48  535.00  549.00  10.00
547  549.50  559.00  539.00  549.50   0.50
548  570.00  570.00  535.00  570.00  20.50

和此:

         g     h     i      j     k
461  4.480  4.62  4.45  4.480  0.02
462  4.420  4.55  4.42  4.420  0.05

我的问题是,当我做

result = pd.concat([clin, avo, aph, abc], axis=1, ignore_index=True)

结果是:

  0   1   2   3   4      5     6     7      8     9      10     11     12  \
461  NaN NaN NaN NaN NaN  4.480  4.62  4.45  4.480  0.02    NaN    NaN    NaN   
462  NaN NaN NaN NaN NaN  4.420  4.55  4.42  4.420  0.05    NaN    NaN    NaN   
463  NaN NaN NaN NaN NaN  3.920  4.50  3.70  3.920  0.50    NaN    NaN    NaN   
464  NaN NaN NaN NaN NaN  3.920  3.95  3.90  3.920  0.00    NaN    NaN    NaN   
465  NaN NaN NaN NaN NaN  3.780  4.15  3.78  3.780  0.15    NaN    NaN    

基本上结果数据框不是400行,有20个特征,我明白这是因为其他数据框中的列会有Nan,因为名称不同,但我很困惑如何加入它们无论如何,我需要它在最后是一个非常粗糙的联接 我试过reset_index但是现在考虑它当然不会起作用,因为它没有为没有列a的其他数据帧中的列a创建值

1 个答案:

答案 0 :(得分:1)

如果您不关心索引,那么您可以这样做:

In [7]:

pd.concat([df.reset_index(drop=True),df1.reset_index(drop=True)], axis=1)
Out[7]:
       a       b    c      d     e     g     h     i     j     k
0  539.0  558.00  535  539.0   6.5  4.48  4.62  4.45  4.48  0.02
1  549.0  550.48  535  549.0  10.0  4.42  4.55  4.42  4.42  0.05
2  549.5  559.00  539  549.5   0.5   NaN   NaN   NaN   NaN   NaN
3  570.0  570.00  535  570.0  20.5   NaN   NaN   NaN   NaN   NaN