我有一个带有json列的csv文件。 json列包含一个json对象数组。如何将此json数据规范化为列并保留记录的主要ID
CSV数据:
id actions
1 [{"A": 47, "action": "views"}]
2 [{"K": 70, "action": "conversions"}, {"J": 83, "action": "views"}]
预期的数据帧输出应该是这样的:
# A K J action id
# 0 47 0 0 views 1
# 1 0 70 0 conversions 2
# 2 0 0 83 views 2
答案 0 :(得分:2)
使用ast
将字符串转换为对象
df=pd.read_csv('WI.csv')
df
Out[1307]:
id actions
0 1 [{"A": 47, "action": "views"}]
1 2 [{"K": 70, "action": "conversions"}, {"J": 83,...
import ast
df.actions.apply(ast.literal_eval)
pd.DataFrame(df.actions.apply(ast.literal_eval).sum()).fillna(0)
Out[1319]:
A J K action
0 47.0 0.0 0.0 views
1 0.0 0.0 70.0 conversions
2 0.0 83.0 0.0 views
更新
pd.DataFrame(df.actions.apply(ast.literal_eval).sum(),index=df.id.repeat(df.actions.apply(ast.literal_eval).str.len())).fillna(0)
Out[151]:
A J K action
id
1 47.0 0.0 0.0 views
2 0.0 0.0 70.0 conversions
2 0.0 83.0 0.0 views