如何将嵌套列表字典结构转换为Pandas DataFrame?
问题描述
我有一个数据集,格式为列表,每个元素是包含字典列表的JSON字符串:
['[{"date_update":"31-03-2022","diemquatrinh":"6.0"}]', '[{"date_update":"28-04-2022","diemquatrinh":"6.5"}]', '[{"date_update":"25-12-2021","diemquatrinh":"6.0"}, {"date_update":"28-04-2022","diemquatrinh":"6.25"},{"date_update":"28-07-2022","diemquatrinh":"6.5"}]', '[{"date_update":null,"diemquatrinh":null}]']
需要将其转换为包含updated_at和diemquatrinh两列的DataFrame,示例格式如下:
| updated_at | diemquatrinh |
|---|---|
| 11-03-2022 | 6.25 |
| 25-12-2021 | 6.0 |
| 28-04-2022 | 6.25 |
| 28-07-2022 | 6.5 |
| null | null |
解决方案
使用Python的pandas和json库即可实现,步骤如下:
- 遍历列表中的每个JSON字符串,解析为字典列表
- 合并所有字典列表为一个大列表
- 转换为DataFrame并重命名列名
代码实现
import pandas as pd import json # 原始数据集 data = [ '[{"date_update":"31-03-2022","diemquatrinh":"6.0"}]', '[{"date_update":"28-04-2022","diemquatrinh":"6.5"}]', '[{"date_update":"25-12-2021","diemquatrinh":"6.0"}, {"date_update":"28-04-2022","diemquatrinh":"6.25"},{"date_update":"28-07-2022","diemquatrinh":"6.5"}]', '[{"date_update":null,"diemquatrinh":null}]' ] # 解析所有JSON字符串并合并数据 all_records = [] for json_str in data: records = json.loads(json_str) all_records.extend(records) # 转换为DataFrame并重命名列 df = pd.DataFrame(all_records).rename(columns={"date_update": "updated_at"}) # 可选:将diemquatrinh转换为数值类型(如需保留null字符串可删除此行) df['diemquatrinh'] = pd.to_numeric(df['diemquatrinh'], errors='coerce') print(df)
输出结果
执行代码后得到的DataFrame如下:
| updated_at | diemquatrinh |
|---|---|
| 31-03-2022 | 6.00 |
| 28-04-2022 | 6.50 |
| 25-12-2021 | 6.00 |
| 28-04-2022 | 6.25 |
| 28-07-2022 | 6.50 |
| null | NaN |
内容的提问来源于stack exchange,提问作者Phạm Tấn Thành
相关产品推荐
相关产品推荐

