如何解决以矢量化方式将复杂列表转换为数据框
使用列表推导并传递给 DataFrame 构造函数:
L = [(x['id'], y, z) for x in list_of_data for y, z in
zip(x['results']['test_date'], x['results']['Score'])]
df = pd.DataFrame(L, columns=['id','test_date','Score'])
print (df)
id test_date Score
0 1 2020-06-29 12
1 1 2020-07-02 23
2 1 2020-07-05 23
3 1 2020-07-09 12
4 1 2020-07-10 11
5 1 2020-07-11 13
6 1 2020-07-13 13
7 2 2020-06-29 12
8 2 2020-07-02 23
9 2 2020-07-05 23
10 2 2020-07-09 12
11 2 2020-07-10 11
12 2 2020-07-11 13
13 2 2020-07-13 13
或json_normalize
使用DataFrame.explode
,rename
列并按列表过滤列:
df = (pd.json_normalize(list_of_data)
.explode(['results.test_date','results.Score'])
.rename(columns={'results.test_date':'test_date','results.Score':'Score'})
[['id','test_date','Score']])
解决方法
我有一个 len ~ 1M 的嵌套列表。片段如下。我希望将其转换为数据框,如下所示。
import pandas as pd
list_of_data = [{'id':1,'name': 'A','results':{'test_date':['2020-06-29','2020-07-02','2020-07-05','2020-07-09','2020-07-10','2020-07-11','2020-07-13'],'Score': [12,23,12,11,13,13]}},{'id':2,'name': 'B',13]}}]
预期的数据框:
df = pd.DataFrame({'id':[1,1,2,2],'test_date':['2020-06-29','2020-07-13','2020-06-29',13]})
Is it possible to do this?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。