我正在尝试在以下 Pandas 数据框中解压缩嵌套的JSON:
id info
0 0 [{u'a': u'good', u'b': u'type1'}, {u'a': u'bad', u'b': u'type2'}]
1 1 [{u'a': u'bad', u'b': u'type1'}, {u'a': u'bad', u'b': u'type2'}]
2 2 [{u'a': u'good', u'b': u'type1'}, {u'a': u'good', u'b': u'type2'}]
我的预期结果是:
id type1 type2
0 0 good bad
1 1 bad bad
2 2 good good
我一直在寻找其他解决方案,包括
json_normalize
,但不幸的是,它对我不起作用。我应该将JSON当作字符串来获取我想要的吗?还是有更直接的方法来做到这一点? 最佳答案
json_normalize
处理字典的list
,并在设置公共(public)路径后将各个字典分成单独的系列,这是这里的信息。然后,添加unstack
+ apply系列,该系列向下附加到该级别。 from pandas.io.json import json_normalize
df_info = json_normalize(df.to_dict('list'), ['info']).unstack().apply(pd.Series)
df_info
DF
旋转aggfunc
以处理重复的索引轴:DF = df_info.pivot_table(index=df_info.index.get_level_values(1), columns=['b'],
values=['a'], aggfunc=' '.join)
DF
pd.concat([df[['ID']], DF.xs('a', axis=1).rename_axis(None, 1)], axis=1)
开始使用的
DF
:df = pd.DataFrame(dict(ID=[0,1,2], info=[[{u'a': u'good', u'b': u'type1'}, {u'a': u'bad', u'b': u'type2'}],
[{u'a': u'bad', u'b': u'type1'}, {u'a': u'bad', u'b': u'type2'}],
[{u'a': u'good', u'b': u'type1'}, {u'a': u'good', u'b': u'type2'}]]))
关于python - 在pandas数据框中提取嵌套的JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40702633/