我有一个嵌套字典列表
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
但是必须有一个更简单的方法;这个很难看 - 现在无法弄清楚。
使用带有字典理解的嵌套列表,然后重新创建
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