給定一個字典串列:
import pandas as pd
d =[{'foil': ['a', 'b', 'c']},
{'car': ['b', 'c','d','e']},
{'container': ['e','f','g','h','i','j']}]
df=pd.DataFrame()
for c in d:
print(c)
word = list(c.keys())[0]
values = c[word]
df[word] = pd.Series(values, name=word)
df
我想構建一個資料框,其中每列的名稱是箔、汽車和容器,值是串列中的值。
像上面那樣回圈的問題是結果是:

但我想擁有所有值,如果需要,較短的列可能會填充 NAN(然后將 NAN 更改為“”)
在我看來,回圈遍歷每個 dict 并將值添加到串列的最大(長度)串列中似乎非常麻煩。
還有更多的pythonic方式嗎?
謝謝
uj5u.com熱心網友回復:
您可以將字典串列更改為單個字典,然后呼叫from_dict:
>>> pd.DataFrame.from_dict({k: v for dct in d for k,v in dct.items()},orient="index").T
foil car container
0 a b e
1 b c f
2 c d g
3 None e h
4 None None i
5 None None j
uj5u.com熱心網友回復:
您可以concat使用 for 回圈檢查結果
out = pd.concat([pd.DataFrame(x) for x in d],axis=1)
Out[534]:
foil car container
0 a b e
1 b c f
2 c d g
3 NaN e h
4 NaN NaN i
5 NaN NaN j
uj5u.com熱心網友回復:
可以ChainMap用來合并字典和 DataFrame 建構式:
from collections import ChainMap
c = ChainMap(*d)
df = pd.DataFrame(c.values(), index=c).T
或者,根據@not_speshal 的好回答,
from collections import ChainMap
df = pd.DataFrame.from_dict(ChainMap(*d), orient="index").T
輸出:
container car foil
0 e b a
1 f c b
2 g d c
3 h e NaN
4 i NaN NaN
5 j NaN NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437562.html
上一篇:無法檢查鍵是否屬于值
