You need to enable JavaScript to run this app. 如何在pandas的DataFrame.from_records方法中默认使用pd.NA?
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas的DataFrame.from_records方法中默认使用pd.NA?

解决方案

pandas目前没有全局配置项可以直接让DataFrame.from_records默认生成pd.NA作为缺失值,你可以用以下两种方案在数据创建阶段就规避类型强制转换问题,原生使用pd.NA作为缺失值标记:

方案1:创建时指定nullable类型参数

pandas的可空数据类型(Int64、string、Float64等)原生使用pd.NA作为缺失值,你可以在创建DataFrame时直接通过dtype参数指定每列的对应类型:

import pandas as pd

df = pd.DataFrame.from_records(
    [
        {'a': 1, 'b': 'x'},
        {'b': 'y', 'c': 1.7},
    ],
    dtype={
        'a': 'Int64',  # 可空整数类型
        'b': 'string', # 可空字符串类型
        'c': 'Float64' # 可空浮点数类型
    }
)

生成的结果如下,所有缺失值均为pd.NA,a列保持整数类型不会被强制转为float:

a  b     c
0     1  x  <NA>
1  <NA>  y   1.7

方案2:创建后调用convert_dtypes()自动转换

如果你不想手动逐个指定列类型,可以在创建DataFrame后立即调用convert_dtypes()方法,它会基于原始数据的取值自动匹配对应的可空类型,同时把NaN替换为pd.NA,不会出现你担心的整数列被强制转为float的问题:

df = pd.DataFrame.from_records([
    {'a': 1, 'b': 'x'},
    {'b': 'y', 'c': 1.7},
]).convert_dtypes()

注意:由于pd.NA目前仍为实验特性,以上方案仅支持pandas 1.0及以上版本,生产环境使用建议先做兼容性测试。

内容的提问来源于stack exchange,提问作者ramslök

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:36:02