使用分层列创建DataFrame

Ale*_*erg 8 python pandas

创建DataFrame具有分层列的最简单方法是什么?

我目前正在创建一个名称字典的数据框 - > Series使用:

df = pd.DataFrame(data=serieses)

我想使用相同的列名称,但在列上添加额外级别的层次结构.目前我希望附加级别对列具有相同的值,让我们说"估计".

我正在尝试以下但这似乎不起作用:

pd.DataFrame(data=serieses,columns=pd.MultiIndex.from_tuples([(x, "Estimates") for x in serieses.keys()]))

我得到的只是一个包含所有NaN的DataFrame.

例如,我正在寻找的是:

l1               Estimates    
l2  one  two  one  two  one  two  one  two
r1   1    2    3    4    5    6    7    8
r2   1.1  2    3    4    5    6    71   8.2
Run Code Online (Sandbox Code Playgroud)

其中l1和l2是MultiIndex的标签

Ale*_*erg 10

这似乎有效:

import pandas as pd

data = {'a': [1,2,3,4], 'b': [10,20,30,40],'c': [100,200,300,400]}

df = pd.concat({"Estimates": pd.DataFrame(data)}, axis=1, names=["l1", "l2"])

l1  Estimates         
l2          a   b    c
0           1  10  100
1           2  20  200
2           3  30  300
3           4  40  400
Run Code Online (Sandbox Code Playgroud)


Dim*_*imG 5

我知道这个问题确实很老,但是对于pandas0.19.1一个版本,可以使用直接dict-initialization:

d = {('a','b'):[1,2,3,4], ('a','c'):[5,6,7,8]}
df = pd.DataFrame(d, index=['r1','r2','r3','r4'])
df.columns.names = ('l1','l2')
print df

l1  a   
l2  b  c
r1  1  5
r2  2  6
r3  3  7
r4  4  8
Run Code Online (Sandbox Code Playgroud)