gpt4 book ai didi

python - 将一列中的字典列表转换为同一数据框中的多列

转载 作者:行者123 更新时间:2023-12-01 01:16:42 24 4
gpt4 key购买 nike

我的数据框有一列包含字典列表。我如何将其转换为扩展数据框?数据框如图所示。

A       B       C
123 abc [{"name":"john"},{"age":"28"},{"salary":"50000"}]
345 bcd [{"name":"alex"},{"age":"38"},{"salary":"40000"}]
567 xyx [{"name":"Dave"},{"age":"82"},{"salary":"30000"}]

我尝试了以下方法

> df1=pd.concat([pd.DataFrame(x) for x
> indf['C']],keys=df['A']).reset_index(level=1, drop=True).reset_index()

最终输出如下

A       B        name   salary   age
123 abc john 50000 28
345 bcd alex 40000 38
567 xyx Dave 30000 82

最佳答案

IIUC,将 dictlist 扁平化为一个 dict,然后我们使用 dataframe 构造函数,只需要 concat 回到原来的 df

from itertools import chain
s=pd.DataFrame([dict(chain(*map(dict.items,x))) for x in df.pop('C').tolist()],index=df.index)
s
age name salary
0 28 john 50000
1 38 alex 40000
2 82 Dave 30000
s=pd.concat([df,s],1)
s
A B age name salary
0 123 abc 28 john 50000
1 345 bcd 38 alex 40000
2 567 xyx 82 Dave 30000

数据输入:

df.to_dict()
{'A': {0: 123, 1: 345, 2: 567}, 'B': {0: 'abc', 1: 'bcd', 2: 'xyx'}, 'C': {0: [{'name': 'john'}, {'age': '28'}, {'salary': '50000'}], 1: [{'name': 'alex'}, {'age': '38'}, {'salary': '40000'}], 2: [{'name': 'Dave'}, {'age': '82'}, {'salary': '30000'}]}}

关于python - 将一列中的字典列表转换为同一数据框中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com