2016-11-26 95 views
4

提供两个不同的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 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 

*指数是一个“DATATIME”对象

感谢

回答

4

一种选择是使用MultiIndex()构建列平为AB,然后将它们连接起来:

import pandas as pd 
A.columns = pd.MultiIndex.from_product([['A'], A.columns]) 
B.columns = pd.MultiIndex.from_product([['B'], B.columns]) 
pd.concat([A, B], axis = 1) 

#   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 
+0

为什么不只是使用MultiIndex.from_produc t()一次结果df? result = pd.concat([A,B],axis = 1) result.columns = pd.MultiIndex.from_product([('A','B'),A.columns]) – Alex

+0

也为什么不是你的柱状多指数的第一个层次是否与jezrael的回答一致? – Alex

+0

如果两个数据框具有不同的维度或不同的列名称,则对结果使用MultiIndex将不起作用。如果你检查答案,第一级与jezrael的答案一致。我可能在这里有不同的缩进。 – Psidom

3

您可以使用concat带参数keys

df = pd.concat([A, B], axis = 1, keys=(list('AB'))) 
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 
相关问题