给定两个不同的df:
"A">
a b
2016-11-21 2 1
2016-11-22 3 4
2016-11-23 5 2
2016-11-24 6 3
2016-11-25 6 3
"B">
a b
2016-11-21 3 0
2016-11-22 1 0
2016-11-23 1 6
2016-11-24 1 5
2016-11-25 0 2
如何创建此形状的"多级"数据帧:
"C">
A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
*索引是一个"数据时间"对象
谢谢
使用concat
:
df = pd.concat([A, B], keys=('A','B'), axis=1)
print (df)
A B
a b a b
2016-11-21 2 1 3 0
2016-11-22 3 4 1 0
2016-11-23 5 2 1 6
2016-11-24 6 3 1 5
2016-11-25 6 3 0 2
对于排序级别,请添加sort_index
:
df = pd.concat([A, B], keys=('A','B'), axis=1).sort_index(axis=1, level=1)
print (df)
A B A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
不建议这样做,但可以:
df = pd.concat([A, B], keys=('A','B'), axis=1)
cols = df.columns.get_level_values(0)
df = df.sort_index(axis=1, level=1)
df.columns = [cols, df.columns.get_level_values(1)]
print (df)
A B
a a b b
2016-11-21 2 3 1 0
2016-11-22 3 1 4 0
2016-11-23 5 1 2 6
2016-11-24 6 1 3 5
2016-11-25 6 0 3 2
因为然后是问题选择列,因为重复的列名:
print (df['A'])
a a
2016-11-21 2 3
2016-11-22 3 1
2016-11-23 5 1
2016-11-24 6 1
2016-11-25 6 0