【发布时间】:2017-01-02 08:34:24
【问题描述】:
我处理了一些非常复杂的嵌套json对象,得到如下通用字典格式:
{'key1':'value1',
'key2':'value2',
'key3':'value3',
'key4':'value4',
'key5':[['value5', 'value6', 'value7'], ['value8', 'value9', 'value10']],
'key6':[['value5', 'value6', 'value7'], ['value8', 'value9', 'value10']]}
在列表列表中,每个列表都表示应该是“个人交易”等价物。每个事务共享 key1、key2、key3、key4 对。可以有任意数量的列表。我正在尝试有效地将这些转换为 pandas 数据框中的记录,如下所示:
key1_field, key2_field, key3_field, key4_field, key5_or_key6_field_1, key5_or_key6_field_2, key5_or_key6_field_3, key5_or_key6_indicator
value1, value2, value3, value 4, value5, value6, value7, key5
value1, value2, value3, value 4, value5, value6, value7, key6
value1, value2, value3, value 4, value8, value9, value10, key5
value1, value2, value3, value 4, value8, value9, value10, key6
任何帮助将不胜感激!做到这一点已经足够挑战了。谢谢!
编辑:
按照要求,我可以发布我一直在尝试解决此问题的方法:
import pandas as pd
import numpy as np
d = {'key1':'value1',
'key2':'value2',
'key3':'value3',
'key4':'value4',
'key5':[['value5', 'value6', 'value7'], ['value8', 'value9', 'value10']],
'key6':[['value5', 'value6', 'value7'], ['value8', 'value9', 'value10']]}
df = pd.DataFrame({k : pd.Series(v) for k, v in d.iteritems()})
我剩下的问题是第一行之后的单个键值是 NaN。
【问题讨论】:
-
@Merlin 当然。明白。我已经尝试了一些使用 dict.iteritems 和列表推导来解决这个问题的选项,但似乎陷入了僵局。任何有关如何剖析问题的建议表示赞赏。
-
@Merlin 我已经用迄今为止我所能得到的最接近的更新了这个。谢谢,约翰
标签: python json pandas dictionary