我有一個類似的 DataFrame:
request data
0 a {'uid': 123}
1 a {'type': 'POST', 'code': 200}
2 a {}
3 b {'uid': 456}
4 b {'type': 'GET', 'code': 200}
5 b {'args': 'some data'}
要復制的代碼:
data = [
['a', 'a', 'a', 'b', 'b', 'b'],
[{'uid': 123}, {'type': 'POST' ,'code':200}, {},
{'uid': 456}, {'type': 'GET' ,'code':200}, {'args': 'some data'}]
]
cols = ['request', 'data']
df = pd.DataFrame(data=zip(data[0], data[1]), columns=cols)
我想從資料列中的字典創建列,然后將表展平為最小行數,這樣我的結果 DF 將是:
request uid type code args
0 a 123 POST 200 None
1 b 456 GET 200 some data
uj5u.com熱心網友回復:
您可以使用 將字典轉換為資料框,然后使用 apply(pd.Series)進行聚合:groupbyfirst
df['data'].apply(pd.Series).groupby(df['request']).first()
輸出:
uid type code args
request
a 123.0 POST 200.0 None
b 456.0 GET 200.0 some data
或使用collections.ChainMap:
from collections import ChainMap
(df.groupby('request')['data']
.apply(lambda s: pd.Series(ChainMap(*s.values)))
.unstack(level=1)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421087.html
標籤:
下一篇:熊貓用序號重命名選定的列
