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

含None值时如何避免Pandas DataFrame自动将int转为float

解决Pandas转换DataFrame时整数列自动转为float的问题

当你将包含整数和None的列表转换为Pandas DataFrame时,整数列会因存在缺失值被自动转为float类型,示例如下:

df_raw = [
    ("Madhan", 0, 9.34),
    ("Kumar", None, 7.6)
]
pd.DataFrame(df_raw)

输出:

0    1     2
0  Madhan  0.0  9.34
1  Kumar  NaN   7.6

解决方案

使用dtype=object构造DataFrame,即可保留每个元素的原始类型,避免整数被强制转为float:

df = pd.DataFrame(df_raw, dtype=object)
print(df)

输出:

0     1     2
0  Madhan     0  9.34
1  Kumar  None   7.6

原尝试方法无效的原因

  • 指定dtype=str或pd.StringDtype()时,Pandas会先推断列的统一类型(因存在None,整数列会被推断为float),再将整个列转为字符串,因此会出现0.0、NaN这类不符合预期的字符串。
  • convert_dtypes无法处理大整数的情况,是因为大整数所在列因存在None被推断为float,转换后仍会保留浮点数格式。

验证大整数场景

针对包含大整数的场景,dtype=object同样有效:

df_raw = [
    ("Madhan", 5, 9.34, None),
    ("Kumar", None, 7.6, 34534543454)
]
df = pd.DataFrame(df_raw, dtype=object)
print(df)

输出:

0     1     2            3
0  Madhan     5  9.34        None
1  Kumar  None   7.6  34534543454

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:35:11