gpt4 book ai didi

python-3.x - 如何在 pandas 数据框列内的列表中分解/拆分嵌套列表并从中创建单独的列?

转载 作者:行者123 更新时间:2023-12-03 11:24:53 24 4
gpt4 key购买 nike

我有一个数据框。我想将 Options 列拆分为 id、AUD、ud。

id col1 col2  Options
1 A B [{'id':25,'X': {'AUD': None, 'ud':0}}]
2 C D [{'id':27,'X': {'AUD': None, 'ud':0}}]
3 E F [{'id':28,'X': {'AUD': None, 'ud':0}}]
4 G H [{'id':29,'X': {'AUD': None, 'ud':0}}]

预期输出数据帧:

id col1 col2 id   Aud   ud
1 A B 25 None 0
2 C D 27 None 0
3 E F 28 None 0
4 G H 29 None 0

如何使用 python3.6 和 pandas dataframe 来实现?

最佳答案

使用列表理解和json_normalize 获取DataFrame 并按concat 连接在一起, 还添加了 DataFrame.add_prefix为避免重复的列名:

from pandas.io.json import json_normalize
import ast

L = [json_normalize(x) for x in df.pop('Options')]
#if strings instead dicts
#L = [json_normalize(ast.literal_eval(x)) for x in df.pop('Options')]

df = df.join(pd.concat(L, ignore_index=True, sort=False).add_prefix('opt_'))
print (df)
id col1 col2 opt_id opt_X.AUD opt_X.ud
0 1 A B 25 None 0
1 2 C D 27 None 0
2 3 E F 28 None 0
3 4 G H 29 None 0

另一种提取嵌套字典的 X 值的解决方案:

L = [{k: v for y in ast.literal_eval(x) for k, v in {**y.pop('X'), **y}.items()} 
for x in df.pop('Options')]

df = df.join(pd.DataFrame(L, index=df.index).add_prefix('opt_'))
print (df)
id col1 col2 opt_AUD opt_ud opt_id
0 1 A B None 0 25
1 2 C D None 0 27
2 3 E F None 0 28
3 4 G H None 0 29

关于python-3.x - 如何在 pandas 数据框列内的列表中分解/拆分嵌套列表并从中创建单独的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60811630/

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