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

如何快速将Pandas混合类型列中的float转为int?

高效批量转换DataFrame中float类型值为int的方法

你的思路完全正确——用.loc批量筛选+转换的方式,能彻底解决百万级数据下逐行遍历的效率问题,比iterrows快几个数量级。

核心解决方案

直接通过布尔掩码筛选目标行,再批量转换赋值:

# 生成布尔掩码:筛选出value列是float类型的行
mask = df['value'].apply(lambda x: isinstance(x, float))
# 批量将这些float值转为int
df.loc[mask, 'value'] = df.loc[mask, 'value'].apply(int)

更严谨的版本(避免转换非整数float)

如果你的数据里存在非整数的float(比如5.5),不想误转换的话,可以在掩码里加上整数判断:

# 只筛选是整数型的float值(如5.0,排除5.5)
mask = df['value'].apply(lambda x: isinstance(x, float) and x.is_integer())
df.loc[mask, 'value'] = df.loc[mask, 'value'].astype(int)

为什么这个方法快?

iterrows是逐行遍历,每一次.at赋值都是单独的IO操作,百万行数据会触发百万次操作;而.loc的批量操作是基于Pandas的向量化底层优化,一次性完成筛选和转换,能把处理时间从几十分钟压缩到几秒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:09:58