我已经定义了3个简单的数据框如下:
dates = [dt.datetime(2015,1,1),dt.datetime(2015,1,2)]
column_names = ['A','B']
data_open = pd.DataFrame([[1,2],[3,4]], index=dates, columns=column_names)
data_close = pd.DataFrame([[5,6],[7,8]], index=dates, columns=column_names)
data_volume = pd.DataFrame([[9,10],[11,12]], index=dates, columns=column_names)
打印时,它们如下所示:
print data_open
A B
2015-01-01 1 2
2015-01-02 3 4
print data_close
A B
2015-01-01 5 6
2015-01-02 7 8
print data_volume
A B
2015-01-01 9 10
2015-01-02 11 12
我正在寻找的方法是将所有三个合并在一起并获得一个带有MultiIndex的单个DataFrame,如下所示:
我是Pandas的新手,我查看了文档,找不到我要找的东西。
答案 0 :(得分:2)
您可以使用concat
指定keys
,然后指定swaplevel
和sort_index
:
df = pd.concat([data_open, data_close, data_volume], keys=['open', 'close', 'volume'])
df = df.swaplevel(0,1).sort_index()
print df
A B
2015-01-01 close 5 6
open 1 2
volume 9 10
2015-01-02 close 7 8
open 3 4
volume 11 12
如果您想按列A
排序:
df = df.groupby(level=0).apply(lambda x: x.sort_values('A'))
df.index = df.index.droplevel(0)
print df
A B
2015-01-01 open 1 2
close 5 6
volume 9 10
2015-01-02 open 3 4
close 7 8
volume 11 12