繁体   English   中英

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

[英]how to convert one column of dataframe into distributive column which has values in json format (PYTHON)

假设我有一个数据框值

例如 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而不是字典格式在此处输入图片说明

我想将其分发为单独的格式,因此预期输出如下

在此处输入图片说明

首先将字符串 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM