gpt4 book ai didi

python - 包含 None 时如何将字典拆分为列

转载 作者:行者123 更新时间:2023-12-04 01:03:47 25 4
gpt4 key购买 nike

我将一个嵌套的 JSON 文件转换为一个数据框并进行了一些操作,现在数据框的一部分如下所示:

<表类="s-表"><头>产品shelfId<正文> {'产品': []}啊啊啊 {'产品': []}bb {'产品': [{'id': '111', '数量': 10}]}抄送 {'产品': [{'id': '222', '数量': 0}]}dd

现在我想展平产品列,并获得如下 df:

<表类="s-表"><头>id数量shelfId<正文>NaNNaN啊啊啊NaNNaNbb11110抄送2220dd

我试过:

df = pd.json_normalize(df['product'])

然后我得到了这样一个 df:

<表类="s-表"><头>产品<正文>[][] [{'id': '111', 'quantity': 10}] [{'id': '222', 'quantity': 0}]

然后我再次尝试标准化:

df = pd.json_normalize(df['product'])

但显示错误:

AttributeError: 'list' object has no attribute 'values'

我也尝试过类似的事情

df = pd.DataFrame(df['product'].values.tolist())

但基本上得到了类似的错误。我认为这是因为空列表?有办法解决吗?


添加示例输入:

dict1 = {'产品': {0: [], 1: [], 2: [{'id': '111', '数量': 10}], 3: [{'id': ' 222', '数量': 0}]}, 'shelfId': {0: 'aaa', 1: 'bbb', 2: 'ccc', 3: 'ddd'}}

dfnew = pd.DataFrame.from_dict(dict1)

最佳答案

由于 product 列的结构是已知的并且对于所有记录都是相同的,您可以使用 提取 idquantity >.str:

x = df.pop('products').str[0]
df['id'] = x.str['id']
df['quantity'] = x.str['quantity']

df

输出:

  shelfId   id  quantity
0 aaa NaN NaN
1 bbb NaN NaN
2 ccc 111 10.0
3 ddd 222 0.0

关于python - 包含 None 时如何将字典拆分为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67220165/

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