pandas列表中的json成列

时间:2018-02-21 19:07:00

标签: python pandas

我有一个带有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

1 个答案:

答案 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