创建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)
我知道这个问题确实很老,但是对于pandas第0.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)