gpt4 book ai didi

python - pandas 系列中的 JSON 对象

转载 作者:行者123 更新时间:2023-11-30 22:23:19 24 4
gpt4 key购买 nike

我有一个 pandas 系列,其中包含字符串格式的 JSON 对象列表作为值。下面是一个例子。

sr = pd.Series(['[{"fruit": "apple", "box_a": 2}, {"fruit": "grape", "box_b": 4}]', '[{"fruit": "orange", "box_g": 2}]', '[{"fruit": "mango", "box_c": 6}, {"fruit": "grape", "box_e": 3}]'])

我的目标是找到一种有效的方法将该系列转换为具有以下结构的数据框。作为新手,我只能想到使用嵌套循环进行转换,在其中迭代每一行和项目。

sr_df = pd.DataFrame({'fruit':['apple', 'grape', 'orange', 'mango', 'grape'], 'box':['box_a', 'box_b', 'box_g', 'box_c', 'box_e'], 'count':[2,4,2,6,3]})

我期待学习新方法。

最佳答案

您可以使用:

  • 首先通过 ast 将字符串转换为 python 字典列表
  • 在列表理解中创建新的 DataFrame,将列 fruit 设置为索引
  • concat并通过 stack reshape
  • 对于整数转换为 astype
  • MultiIndex 转换为列并重命名列
<小时/>
import ast

df = (pd.concat([pd.DataFrame(x).set_index('fruit') for x in sr.apply(ast.literal_eval)])
.stack()
.astype(int)
.reset_index(name='count')
.rename(columns={'level_1':'box'}))
print (df)
fruit box count
0 apple box_a 2
1 grape box_b 4
2 orange box_g 2
3 mango box_c 6
4 grape box_e 3

关于python - pandas 系列中的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073493/

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