如何将一列数据框转换为具有json格式值的分布列(PYTHON)

Posted

技术标签:

【中文标题】如何将一列数据框转换为具有json格式值的分布列(PYTHON)【英文标题】:how to convert one column of dataframe into distributive column which has values in json format (PYTHON) 【发布时间】:2021-10-03 19:49:18 【问题描述】:

假设我有一个数据框值

例如test_data.csv(包含以下数据)

effective_date,ds,id,id_type,e_data,create_id,create_timestamp
2021-07-26,am,27,a_id,"""cup_id"": ""ffdsds"", ""rate"": ""B"", ""direct"": ""stable"", ""dl_tstmp"": ""2021-07-26 00:00:00"", ""inst_id"": 1213, ""src_p_tstmp"": ""2021-07-26 00:00:00"", ""inst_name"": ""abc corp""",MA,2021-07-26 00:00:00
2021-07-26,am,24,a_id,"""cup_id"": ""ererwe"", ""rate"": ""AB"", ""direct"": ""improvent"", ""dl_tstmp"": ""2021-07-26 00:00:00"", ""inst_id"": 66641, ""src_p_tstmp"": ""2021-07-26 00:00:00"", ""inst_name"": ""xyz corp""",MA,2021-07-26 00:00:00
2021-07-27,am,22,a_id,"""cup_id"": ""34kf3"", ""rate"": ""AA"", ""direct"": ""improvent"", ""dl_tstmp"": ""2021-07-26 00:00:00"", ""inst_id"": 6871, ""src_p_tstmp"": ""2021-07-26 00:00:00"", ""inst_name"": ""rimr corp""",MA,2021-07-26 00:00:00
2021-07-27,am,32,a_id,"""cup_id"": ""5gh23"", ""rate"": ""AAA"", ""direct"": ""downfall"", ""dl_tstmp"": ""2021-07-26 00:00:00"", ""inst_id"": 98795, ""src_p_tstmp"": ""2021-07-26 00:00:00"", ""inst_name"": ""prst corp""",MA,2021-07-26 00:00:00


import pandas as pd
df = pd.read_csv("test_data.csv")

其中 e_data 列是 json_format 不是字典 格式

我想分发到单独的格式 因此预期的输出如下

【问题讨论】:

可能与 (***.com/questions/21104592/json-to-pandas-dataframe) 重复 您的问题解决了吗?如果是这样,请尝试考虑 accepting 向其他人发出问题已解决的信号。如果没有,您可以提供反馈,以便改进(或完全删除)答案 【参考方案1】:

首先将字符串dict转换为真正的dict:

from ast import literal_eval

df['e_data']=df['e_data'].map(literal_eval)

最后:

尝试使用join()+DataFrame()+tolist()pop() 删除“e_data”列:

df=df.join(pd.DataFrame(df.pop('e_data').tolist()))

df=df.join(df['e_data'].apply(pd.Series)).drop('e_data',1)

【讨论】:

嗨@anurag dabas 实际上这个逻辑在这里工作正常但是当我在我的数据集中运行它时它不起作用,因为它可能在字典上很好但在json中我有存储价值的列json格式不在字典中 @AnilTiwari 所以在问题中发布该格式,而不是发布一系列字典 @AnilTiwari 那么你是怎么读的?..我的意思是你可以告诉分隔符? 基本上是csv @AnilTiwari 是的先生,我知道这就是为什么我要求您在 read_csv() 方法中使用的分隔符来加载 csv 文件

以上是关于如何将一列数据框转换为具有json格式值的分布列(PYTHON)的主要内容,如果未能解决你的问题,请参考以下文章

如何将一列时间戳转换为日期时间? [复制]

如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列

按组将一列转换为多列

快速将 JSON 列转换为 Pandas 数据框

VBA 如何将一列字符转成日期

将一列字符串转换为熊猫列表