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
添加回答
舉報