【问题标题】:Extracting data from a column with JSON data with the original dataframe使用原始数据框从包含 JSON 数据的列中提取数据
【发布时间】:2021-10-04 07:53:18
【问题描述】:

我的数据框df如下:

   API     sp_name               sp_input_params
getData   analytics.sp_1        {'req_url_query_params': [['@scroll_index', 'index']], 
                                 'req_body_params': [['@event_type_id', 'event_type_id']]}
getParam  analytics.sp_2        {'req_url_query_params': [['@athlete_guid', 'athlete_guid']], 
                                 'req_body_params': []}

现在我想规范化字段sp_input_params。实现这一目标的方法之一是

df_final = pd.json_normalize(df['sp_input_params'])

但上述内容不会保留其他两列,即APIsp_name。我想让它们与标准化的保持一致。

这有什么线索吗?

【问题讨论】:

    标签: python json pandas


    【解决方案1】:

    我认为你可以使用df.index 中的默认索引:

    df_final = df.join(pd.json_normalize(df.pop('sp_input_params')))
    

    如果没有,请使用:

    df_final = df.join(pd.json_normalize(df.pop('sp_input_params')).set_index(df.index))
    

    【讨论】:

    • 这是什么流行的东西?我不知道同样的事情。其次,在提取 JSON 后,我在列表中获取数据。喜欢[['@scroll_index', 'index']]。是否可以在结果数据帧上应用lambda 以使其成为unlisted?第三,如果我在pop 中使用超过 1 列怎么办?
    • 这里使用DataFrame.pop 用于原始使用的 nad drop 列。 Secondly after extracting the JSON I am getting data in lists - 预期输出是什么?不,多个columns不能在pop
    • 预期的纯字符串输出。我已经使用apply 做到了这一点。那么如何添加多个包含 JSON 字符串的列呢?
    • @pythondumb - 另一个想法是使用this 解决方案
    • @pythondumb - 是否可以将带有 json 数据的列添加到像 pd.DataFrame(data) 这样的问题中?输入数据的预期输出是什么?
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 2018-09-16
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多