1 回答

TA贡献1821条经验 获得超6个赞
一种方法是首先使用将值加载为列表,然后将它们串联起来:DataFrame.from_dict
d = {'x':
{'1':[2,5,6],'2':[7,6]},
'y':
{'1':[0,4,8],'2':[8,1]},
'z':
{'1':[8,0,9],'2':[2,2]}}
df = pd.DataFrame.from_dict(d, orient="index")
df2 = pd.concat([pd.DataFrame(df[i].values.tolist(),
columns=[f"{i}_{num}" for num in range(len(df[i].iat[0]))]
) for i in df.columns],axis=1)
print (df2)
1_0 1_1 1_2 2_0 2_1
0 2 5 6 7 6
1 0 4 8 8 1
2 8 0 9 2 2
或者,首先使用 来平展列表:chain.from_iterable
from itertools import chain
print (pd.DataFrame([chain.from_iterable(i.values()) for i in d.values()],
index=d.keys(),
columns=[f"{k}_{num}" for k, v in list(d.values())[0].items()
for num in range(len(v))]))
1_0 1_1 1_2 2_0 2_1
x 2 5 6 7 6
y 0 4 8 8 1
z 8 0 9 2 2
添加回答
举报