【问题标题】:Expand Dataframe containing JSON object into larger dataframe将包含 JSON 对象的数据框展开为更大的数据框
【发布时间】:2017-11-15 16:22:56
【问题描述】:

我在 pandas 中有一个包含两列的数据框。一个是 ID,另一个是长 JSON 对象,对于数据帧中的每个对象都是同一个对象。我的目标是为 JSON 对象中的每个键创建列。

这里是输入示例

ID  request_json
175431467   {"Rate":"50","Groups":"7 months - 3 years"

我想将此扩展为包含三列的数据框:ID、Rate 和 Groups。

最好的方法是什么?

【问题讨论】:

    标签: python json python-2.7 pandas


    【解决方案1】:

    您可以将DataFrame 构造函数与joinconcat 一起使用:

    import json
    
    df = df[['ID']].join(pd.DataFrame(df['request_json'].apply(json.loads).values.tolist()))
    print (df)
              ID              Groups Rate
    0  175431467  7 months - 3 years   50
    

    或者:

    df = pd.concat([df['ID'],
                    pd.DataFrame(df['request_json'].apply(json.loads).values.tolist())], axis=1)
    print (df)
              ID              Groups Rate
    0  175431467  7 months - 3 years   50
    

    【讨论】:

    • 这些都不起作用。对于两者,它只是将 request_json 列重命名为 0。
    【解决方案2】:
    In [38]: pd.io.json.json_normalize(df.to_dict('r'))
    Out[38]:
              ID request_json.Groups request_json.Rate
    0  175431467  7 months - 3 years                50
    

    【讨论】:

    • 这不会改变我的数据框
    • @mangodreamz,您需要将其分配回或分配给另一个变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2019-07-25
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多