【问题标题】:create new column in dataframe on nested dict在嵌套字典的数据框中创建新列
【发布时间】:2018-05-08 18:17:02
【问题描述】:

原文件是json数据,我只是把json数据转成dataframe,dataset有两列,一是desp,一是info.info有嵌套字典。

desp       info
this is a {'user_id':12349578,'group':'a','request':False}
looks nice{'user_id':23789094,'group':'b','request':False}
sunny day {'user_id':12398467,'group':'c','request':False}

我想获得一个只能包含despuser_id 作为列名的新数据框。 所以预期的数据框会是这样的:

desp           user_id
this is a      12349578
looks nice     23789094
sunny day      12398467

我想我需要使用concatjoin 来重建dataframe,但还是有些麻烦。

【问题讨论】:

  • 这不是有效的数据框,也不是 python。此外,如果您将在 python 中执行此操作(鉴于您首先在 '' 中设置了 0001234567 和 0007654321),由于您使用了两次字典键,因此 A 组将被 B 组替换。请提供一个有效的示例
  • 你能用有效的输入数据框修改问题吗?
  • 抱歉造成混淆。我刚刚修改了数据集以使其看起来像格式。

标签: python dataframe flatten


【解决方案1】:

你可以试试这样的:

#if info is a string, then you can yaml to convert to dictionary
import yaml
df = df.applymap(yaml.load)

然后使用transform:

df['user'] = df['info'].transform(lambda x: x['user_id'])

输出:

         desp                                               info      user
0   this is a  {'user_id': 12349578, 'group': 'a', 'request':...  12349578
1  looks nice  {'user_id': 23789094, 'group': 'b', 'request':...  23789094
2   sunny day  {'user_id': 12398467, 'group': 'c', 'request':...  12398467

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2021-11-16
    • 2022-01-13
    • 2021-09-22
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多