2016-11-26 116 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 
相關問題