为了账号安全,请及时绑定邮箱和手机立即绑定

将具有不同值的 JSON 提取到 pandas 中的重复 id 列

将具有不同值的 JSON 提取到 pandas 中的重复 id 列

青春有我 2023-07-11 10:40:27
我有以下数据框:df = pd.DataFrame({'id':['0001', '0001'],                   'vat_countries': [{'vat': 21, 'country': 'ES'},                                      {'vat': 23, 'country': 'GR'}]                   })id        vat_countries0001     {'vat': 21, 'country': 'ES'}0001     {'vat': 23, 'country': 'GR'}我想要得到的是:id   vat  country0001  21    'ES'0001  23    'GR'阅读其他问题我得到以下代码:df = df.drop('vat_countries', 1).assign(**pd.DataFrame(list_df['vat_countries'].values.tolist()))然而,这给了我:id   vat  country    0001  21    'ES'    0001  21    'ES'这是错误的。我已经能够使用以下方法获得我想要的结果:c = pd.concat([pd.DataFrame(df[column].values.tolist()),                df.drop(column, 1).reset_index()],               axis=1, ignore_index=True)但这需要手动输入列名称。否则,列名称为 0、1、2、3...有什么方法可以在保留列名称的同时获得所需的输出?谢谢
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

尝试pop修复您的代码


df.join(pd.DataFrame(df.pop('vat_countries').tolist(),index=df.index))

Out[300]: 

     id  vat country

0  0001   21      ES

1  0001   23      GR


查看完整回答
反对 回复 2023-07-11
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您可以使用以下方法访问各个值string methods:


df["vat"] = df.vat_countries.str["vat"]

df["country"] = df.vat_countries.str["country"]

df      


    id         vat_countries               vat  country

0   0001    {'vat': 21, 'country': 'ES'}    21  ES

1   0001    {'vat': 23, 'country': 'GR'}    23  GR


查看完整回答
反对 回复 2023-07-11
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我会pd.Series在带有 s 的列中应用dict,并join用原始结果,即:


import pandas as pd

df = pd.DataFrame({'id':['0001', '0001'], 'vat_countries': [{'vat': 21, 'country': 'ES'}, {'vat': 23, 'country': 'GR'}]})

final_df = df.join(df.vat_countries.apply(pd.Series))

print(final_df)

输出:


     id                 vat_countries  vat country

0  0001  {'vat': 21, 'country': 'ES'}   21      ES

1  0001  {'vat': 23, 'country': 'GR'}   23      GR

正如您所看到的,vat_countires 被留下,如果您想放弃它,您可以简单地删除drop它。


查看完整回答
反对 回复 2023-07-11
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信