即使所有数据集的轴相同,Concat列也会生成NAN

时间:2015-06-18 12:37:07

标签: python pandas dataframe concat

我正在尝试从多个数据帧中连接列。

`AUD = OHLC_AUDUSD['bid']['close'];`
`AUD = AUD.dropna()`
`CAD = OHLC_USDCAD['bid']['close'];`
`CAD = CAD.dropna()`

`print AUD`
  

符号时间戳AUDUSD 2015-01-05 0.8096           2015-01-06 0.8077           2015-01-07 0.8074           2015-01-08 0.8112           2015-01-09 0.8200名称:close,dtype:float64

`print CAD`
  

符号时间戳USDCAD 2015-01-05 1.1756           2015-01-06 1.1838           2015-01-07 1.1818           2015-01-08 1.1826           2015-01-09 1.1864名称:close,dtype:float64

`key=['AUD','CAD']`
`marketData = pd.concat([AUD,CAD], axis=1, keys=key)`

                      AUD     CAD
symbol timestamp                 
AUDUSD 2015-01-05  0.8096     NaN
       2015-01-06  0.8077     NaN
       2015-01-07  0.8074     NaN
       2015-01-08  0.8112     NaN
       2015-01-09  0.8200     NaN
USDCAD 2015-01-05     NaN  1.1756
       2015-01-06     NaN  1.1838
       2015-01-07     NaN  1.1818
       2015-01-08     NaN  1.1826
       2015-01-09     NaN  1.1864

我希望看到的是

              AUD     CAD
timestamp                 
2015-01-05  0.8096  1.1756
2015-01-06  0.8077  1.1838
2015-01-07  0.8074  1.1818
2015-01-08  0.8112  1.1826
2015-01-09  0.8200  1.1864

我还没能弄明白这一点!?

1 个答案:

答案 0 :(得分:0)

问题是您使用的是MultiIndex。因此,第一个对应的元素都不具有索引2015-01-05,一个具有索引(AUDUSD, 2015-01-05)而另一个具有索引(USDCAD, 2015-01-05)。这些被认为是不同的索引。您需要使用droplevel来删除索引的symbol部分,只留下timestamp

或者,您可以在unstack之前symbol输入concat索引,以获取symbol作为列名。然后,在concat之后,您可以使用['AUD', 'CAD']覆盖列名称。