如何从数据字典和索引级别字典构建多索引数据帧

问题描述 投票:0回答:1

我正在努力创作这个

DataFrame

     A  B
x y      
a 1  2  1
  2  6  3
c 2  7  2

从这两个词典看来就足够了:

data = {'A': [2,6,7],
        'B': [1,3,2]}

index = {'x': ['a', 'a', 'c'],
         'y': [1, 2, 2]}

我尝试了几种方法都没有成功,其中:

dfm = pd.DataFrame.from_records(data=data, index=index)

索引大小不正确,是 2 而不是 3。我知道将索引字典拆分为数组和列表的替代方案:

labels = [['a', 'a', 'c'], [1, 2, 2]]
index = pd.MultiIndex.from_arrays(labels, names=['x','y'])
dfm = pd.DataFrame(data, index=index)

但这不是很优雅。

python pandas multi-index
1个回答
0
投票

我认为最干净的方法是将

index
放入数据框,然后 将其转换为 MultiIndex

dfm = pd.DataFrame(
    data,
    index=pd.MultiIndex.from_frame(pd.DataFrame(index)),
)
     A  B
x y      
a 1  2  1
  2  6  3
c 2  7  2

但是“解压”字典可能会更节省内存。

dfm = pd.DataFrame(
    data,
    index=pd.MultiIndex.from_arrays(list(index.values()), names=index.keys()),
)

(相同结果)

© www.soinside.com 2019 - 2024. All rights reserved.