我在pandas数据框中有一个看起来像这样的列:
col1 list_of_dictionaries
1 [{'id': 1,'tid': 1,'measure': 'time','i_id': 0,'type': 'time','time': '2000-06-19T05:08:11Z'},{'id': 2,'tid': 2,'measure': 'time','i_id': 1,'type': 'time','time': '2000-06-19T05:08:11Z'},{'id': 3,'tid': 3,'measure': 'time','i_id': 2,'type': 'time','time': '2000-06-19T05:08:11Z'},{'id': 4,'tid': 4,'measure': 'time','i_id': 1,'type': 'time','time': '2000-06-19T05:08:11Z','status': {'calendar': 0, 'business': 0}}]
如何将同一数据框中的字典列表弄平,使其看起来像这样?
col1 id tid measure i_id type time status.calendar status.business
1 1 1 time 0 time 2000-06-19T05:08:11Z 0 0
1 2 2 time 1 time 2000-06-19T05:08:11Z 0 0
1 3 3 time 2 time 2000-06-19T05:08:11Z 0 0
1 4 4 time 1 time 2000-06-19T05:08:11Z 0 0
我想保留原始数据并在其中扩展,同时每次重复列名都创建更多行。
我在列上尝试了json_normalize,但出现错误:
AttributeError: 'str' object has no attribute 'values'
编辑:
x is a tuple according to spyder:
[
{
'
i
d
'
:
您可以在纯python中嵌套,然后使用 json_normalize
ids, x = zip(*[(id_, value) for id_, sub in zip(df['col1'], df.lod.values.tolist())\
for value in sub])
ndf = pd.io.json.json_normalize(x)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句