考虑到两个不同的df:
‘’
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
*index是一个“datatime”对象
谢谢
发布于 2018-10-23 10:47:57
使用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
https://stackoverflow.com/questions/52947074
复制相似问题