来自嵌套字典列表的 pandas 多索引 DataFrame

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

我有一个嵌套字典列表

lst = [{'a':{'aa':1, 'ab':2}, 'b':{'ba':3, 'bb':4}}] * 2

我正在努力获取带有多索引列的 pandas DataFrame。

目前我正在做:

pd.concat([
    pd.DataFrame.from_dict(dct, orient='index').stack().to_frame().T
    for dct in lst])

输出是(并且应该是)

     a         b     
    aa   ab   ba   bb
0  1.0  2.0  3.0  4.0
0  1.0  2.0  3.0  4.0

但是必须有一个更简单的方法;这个很难看 - 现在无法弄清楚。

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

使用带有字典理解的嵌套列表,然后重新创建

MultiIndex

df = pd.DataFrame([{(k,k1): v1 for k, v in x.items() for k1, v1 in v.items()} for x in lst])
df.columns = pd.MultiIndex.from_tuples(df.columns)
print (df)
   a     b   
  aa ab ba bb
0  1  2  3  4
1  1  2  3  4
© www.soinside.com 2019 - 2024. All rights reserved.