如何将嵌套字典列表转换为指定格式的Pandas DataFrame?
问题:将嵌套字典列表转换为指定格式的Pandas DataFrame
输入数据
input_data = [ {'prediction_response': [{'CONFIDENCE': '0.95', 'ESTIMATED_DROPOFF_TIME': '1664640128037.6028', 'ESTIMATED_DROPOFF_TIME_END': '1664640799132.91', 'ESTIMATED_DROPOFF_TIME_START': '1664639456942.2961', 'ESTIMATED_PICKUP_TIME': '1664637731268.648', 'ESTIMATED_PICKUP_TIME_END': '1664638024419.029', 'ESTIMATED_PICKUP_TIME_START': '1664637438118.267', 'PROVIDER': 'Uber'}]}, {'prediction_response': [{'CONFIDENCE': '0.95', 'ESTIMATED_DROPOFF_TIME': '1664642137826.619', 'ESTIMATED_DROPOFF_TIME_END': '1664642842156.097', 'ESTIMATED_DROPOFF_TIME_START': '1664641433497.1409', 'ESTIMATED_PICKUP_TIME': '1664639622364.198', 'ESTIMATED_PICKUP_TIME_END': '1664639924583.373', 'ESTIMATED_PICKUP_TIME_START': '1664639320145.0232', 'PROVIDER': 'Uber'}]} ]
期望输出
| CONFIDENCE | ESTIMATED_DROPOFF_TIME | ESTIMATED_DROPOFF_TIME_END |
|---|---|---|
| 0.95 | 1664640128037.6028 | 1664640799132.91 |
| 0.95 | 1664642137826.619 | 1664642842156.097 |
已尝试方法
pd.DataFrame.from_dict(x)pd.DataFrame.from_dict(x).T
上述方法未得到预期结果,生成的DataFrame会将prediction_response作为列,内部仍嵌套列表结构。
正确实现方法
需要先提取嵌套结构中的有效数据行,再构建DataFrame。
代码示例
import pandas as pd input_data = [ {'prediction_response': [{'CONFIDENCE': '0.95', 'ESTIMATED_DROPOFF_TIME': '1664640128037.6028', 'ESTIMATED_DROPOFF_TIME_END': '1664640799132.91', 'ESTIMATED_DROPOFF_TIME_START': '1664639456942.2961', 'ESTIMATED_PICKUP_TIME': '1664637731268.648', 'ESTIMATED_PICKUP_TIME_END': '1664638024419.029', 'ESTIMATED_PICKUP_TIME_START': '1664637438118.267', 'PROVIDER': 'Uber'}]}, {'prediction_response': [{'CONFIDENCE': '0.95', 'ESTIMATED_DROPOFF_TIME': '1664642137826.619', 'ESTIMATED_DROPOFF_TIME_END': '1664642842156.097', 'ESTIMATED_DROPOFF_TIME_START': '1664641433497.1409', 'ESTIMATED_PICKUP_TIME': '1664639622364.198', 'ESTIMATED_PICKUP_TIME_END': '1664639924583.373', 'ESTIMATED_PICKUP_TIME_START': '1664639320145.0232', 'PROVIDER': 'Uber'}]} ] # 提取每条数据中的有效字典 data_rows = [item['prediction_response'][0] for item in input_data] # 创建DataFrame df = pd.DataFrame(data_rows) # 筛选需要的列 df = df[['CONFIDENCE', 'ESTIMATED_DROPOFF_TIME', 'ESTIMATED_DROPOFF_TIME_END']] # 输出成指定格式 print(df.to_markdown(index=False))
步骤说明
- 提取有效数据:通过列表推导式遍历输入列表,取出每个字典中
prediction_response列表里的唯一字典元素,将这些元素整理成一个新列表。 - 构建DataFrame:用整理后的列表直接创建DataFrame,此时每行对应一条完整数据。
- 筛选列:如果只需要部分列,通过列名列表筛选即可得到期望格式。
内容的提问来源于stack exchange,提问作者lifo
相关产品推荐
相关产品推荐

