You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过pandas.from_records直接过滤特定键,从嵌套字典列表创建DataFrame?

嗨,这个问题我刚好琢磨过!咱们先拿一个具体的样例数据来演示,假设你的原始数据是这样的:

import pandas as pd

# 模拟你说的"字典的字典组成的列表"
data = [
    {"temperature": {"use": 22, "raw": 22.3}, "humidity": {"use": 45, "raw": 44.8}},
    {"temperature": {"use": 25, "raw": 24.7}, "humidity": {"use": 50, "raw": 50.2}}
]

首先,先说说你可能已经在用的常规方案——先把数据预处理成只包含use值的字典列表,再转成DataFrame:

# 遍历每个主字典,提取每个键对应的"use"值
processed = [{col: nested["use"] for col, nested in item.items()} for item in data]
df = pd.DataFrame(processed)

回到你的核心问题:能不能用from_records直接过滤目标键? 当然可以!其实from_records的本质是接收结构化的记录集合,所以咱们只需要把预处理的逻辑和from_records结合起来就行,不需要额外的中间变量,写法更紧凑:

方法1:列表推导式直接传入from_records

df = pd.DataFrame.from_records(
    [{col: nested["use"] for col, nested in item.items()} for item in data]
)

方法2:用生成器表达式节省内存(大数据场景适用)

如果你的数据量很大,不想生成完整的中间列表,换成生成器表达式就行,from_records同样支持:

df = pd.DataFrame.from_records(
    ({col: nested["use"] for col, nested in item.items()} for item in data)
)

额外提醒:处理缺失use键的情况

如果你的嵌套字典里可能存在没有use键的情况,记得用get方法加默认值,避免抛出KeyError:

df = pd.DataFrame.from_records(
    [{col: nested.get("use", None) for col, nested in item.items()} for item in data]
)

其实本质上,from_records本身并没有专门的参数来直接过滤嵌套键,但通过在传入数据前做一层转换,就能完美实现你想要的效果——既用上了from_records,又精准提取了目标键的值。

内容的提问来源于stack exchange,提问作者Cleb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:55:56