将包含 json 数据的 pandas 数据框的列拆分为多列
Posted
技术标签:
【中文标题】将包含 json 数据的 pandas 数据框的列拆分为多列【英文标题】:Splitting a pandas data frame's column containing json data into multiple columns 【发布时间】:2019-07-25 01:02:13 【问题描述】:我将一个 json 数据加载并标准化为:
json_string = json.loads(data)
df_norm = json_normalize(json_string, errors='ignore')
假设它现在有 2 列:
Group Members
A ['id':'1', 'metrics': '34', 'profile': 'abc','id':'3',
'metrics': '32', 'profile': 'dc']
B ['id':'2', 'metrics': '4', 'profile': 'bac']
我正在寻找一种方法来拆分“成员”列并将其合并回同一“组”下的原始数据框,例如:
Group Members id metrics profile
A 'id':'1', 'metrics': '34', 'profile': 'abc','id':'3', 'metrics': '32', 'profile': 'dc'] 1 34 abc
A 'id':'1', 'metrics': '34', 'profile': 'abc','id':'3', 'metrics': '32', 'profile': 'dc'] 3 32 dc
B ['id':'2', 'metrics': '4', 'profile': 'bac'] 4 4 bac
任何帮助将不胜感激。
【问题讨论】:
你可以在问题中添加示例 json 吗? 是的,请分享data
【参考方案1】:
用途:
import ast
#if necessary convert column to list of dicts
df['Members'] = df['Members'].apply(ast.literal_eval)
#create DataFrames in list comprehension
df1 = pd.concat(k:pd.DataFrame(v) for k, v in df['Members'].items())
#join to original
df = df.join(df1.reset_index(level=1, drop=True)).reset_index(drop=True)
print (df)
Group Members id metrics profile
0 A ['id': '1', 'metrics': '34', 'profile': 'abc'... 1 34 abc
1 A ['id': '1', 'metrics': '34', 'profile': 'abc'... 3 32 dc
2 B ['id': '2', 'metrics': '4', 'profile': 'bac'] 2 4 bac
【讨论】:
任何建议如何避免以下错误 "ValueError: malformed node or string: 'pkt_in': '2502', 'lport': '32872', " 我也遇到了同样的错误以上是关于将包含 json 数据的 pandas 数据框的列拆分为多列的主要内容,如果未能解决你的问题,请参考以下文章