【问题标题】:Flattening nested JSON column in pandas dataframe while making duplicates of other features在复制其他功能的同时展平熊猫数据框中的嵌套 JSON 列
【发布时间】:2021-10-17 00:52:53
【问题描述】:

基本上,我有一个字段如下所示的数据:

Text_ID:1

标题:理论理论

摘要:文本示例

年份:2019

作者:[{'First_Name':'George','Last_Name':'Washington','Affiliation':'USA']},[{'First_Name':'Bill','Last_Name':'Buttlicker' ,'隶属关系':'CAN']}

我正在尝试做的是将 Authors 下的嵌套 JSON 列表展平到数据框中,但我想将它保留在 George Washington USA 拥有自己的行(包括 Text_ID、Title、Abstract 和 Year)的地方,Bill Buttlicker CAN 对他自己的行有相同的数据,我一直在努力弄清楚如何以这种方式展平/标准化。

我尝试过 json_normalize、一些 json_flatten UDF、展平和重新附加等...无济于事。任何帮助将不胜感激。

【问题讨论】:

    标签: python arrays json pandas


    【解决方案1】:

    以下似乎有效

    import pandas as pd
    
    data = {'Text_ID': 1, 'Title': 'Theory of Theories', 'Abstract': 'Text Example', 'Year': 2019,
            'Authors': [{'First_Name': 'George', 'Last_Name': 'Washington', 'Affiliation': 'USA'},
                        {'First_Name': 'Bill', 'Last_Name': 'Buttlicker', 'Affiliation': 'CAN'}]}
    normalized = []
    for auth in data['Authors']:
        normalized.append(auth)
        normalized[-1].update({k: v for k, v in data.items() if k != 'Authors'})
    
    df = pd.DataFrame(normalized)
    print(df)
    

    输出

      First_Name   Last_Name Affiliation  ...               Title      Abstract  Year
    0     George  Washington         USA  ...  Theory of Theories  Text Example  2019
    1       Bill  Buttlicker         CAN  ...  Theory of Theories  Text Example  2019
    
    [2 rows x 7 columns]
    

    【讨论】:

    • 感谢您的回复。我尝试在我的数据框上使用它(只是为了确保我清楚,作者是 pandas DF 中的嵌套 json 列)并且它返回“'list' object has no attribute 'update'”,所以我不确定如何解决这个问题
    • 我的解决方案基于您发布的数据。有用。如果实际数据不同 - 您认为我们可以如何帮助您?
    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 2016-11-29
    • 2020-12-28
    • 2017-09-09
    • 2021-07-07
    • 2020-04-30
    • 2017-11-28
    • 2020-09-06
    相关资源
    最近更新 更多