suc*_*ath 2 python performance dictionary list pandas
我有一个奇怪的列表,其中嵌套了一些字典,看起来像这样:
lst = [{"uniqueid": "100","Content":[{"SaleNum":"1","Date":"12","Price":"230"}, {"SaleNum":"2","Date":"13","Price":"234"}, {"SaleNum":"3","Date":"14","Price":"382"}]},
{"uniqueid": "101","Content":[{"SaleNum":"1","Date":"25","Price":"382"}, {"SaleNum":"2","Date":"26","Price":"493"}, {"SaleNum":"3","Date":"28","Price":"384"}]},
{"uniqueid": "102","Content":[{"SaleNum":"1","Date":"25","Price":"334"}, {"SaleNum":"2","Date":"26","Price":"273"}, {"SaleNum":"3","Date":"28","Price":"394"}]}]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下形式的表格
唯一身份 | 萨莱纳姆 | 日期 | 价格 |
---|---|---|---|
100 | 1 | 12 | 230 |
100 | 2 | 13 | 234 |
100 | 3 | 14 | 第382章 |
101 | 1 | 25 | 第382章 |
101 | 2 | 26 | 第493章 |
101 | 3 | 28 | 第384章 |
102 | 1 | 25 | 第334章 |
102 | 2 | 26 | 273 |
102 | 3 | 28 | 第394章 |
问题之一是数据可能非常大,因为有超过 100 万个唯一 id,所以我想询问如何有效地将列表转换为 Python 中的数据框架。
谢谢你!
explode
与的一种选择json_normalize
:
df = (pd.DataFrame.from_records(lst).explode('Content', ignore_index=True)
.pipe(lambda d: d.join(pd.json_normalize(d.pop('Content'))))
)
Run Code Online (Sandbox Code Playgroud)
或者使用DataFrame
构造函数和列表理解:
df = (pd.DataFrame([d|d2 for d in lst for d2 in d['Content']])
.drop(columns='Content')
)
# or if you only have uniqueid as external key
df = pd.DataFrame([{'uniqueid': d['uniqueid']}|d2
for d in lst for d2 in d['Content']])
Run Code Online (Sandbox Code Playgroud)
输出:
uniqueid SaleNum Date Price
0 100 1 12 230
1 100 2 13 234
2 100 3 14 382
3 101 1 25 382
4 101 2 26 493
5 101 3 28 384
6 102 1 25 334
7 102 2 26 273
8 102 3 28 394
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59 次 |
最近记录: |