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

如何用Pandas提取DataFrame浮点数列的整数部分?

Pandas保留浮点数列的整数部分(舍弃小数)解决方案

没问题!在Pandas里批量处理整列的浮点数据,保留整数部分舍弃小数,有好几种简洁高效的方法,比你单个处理要方便多了,我给你详细说说:

方法1:直接转换整数类型 astype(int)

这是最直接的方式,Pandas的astype(int)会自动截断小数部分,只保留整数部分,完全符合你的需求。代码示例:

# 假设你的浮点数列名为'num_col'
df['num_col'] = df['num_col'].astype(int)

对于你提供的测试数据,执行后就会得到你想要的结果:

0 59
1 50
2 50
3 55
4 58
5 58
6 55
7 57
8 46
9 59
10 57

注意:这个方法对正数非常友好,如果是负数的话,同样会截断小数(比如-59.9会变成-59),和你用divmod的效果一致。

方法2:使用整除运算符 // 1

Pandas支持向量化运算,直接对整列使用// 1(和1做整除),就能快速得到每个元素的整数部分:

# 先做整除,再转整数类型(可选,如果你需要整数而非浮点类型)
df['num_col'] = (df['num_col'] // 1).astype(int)

这个方法的优势是逻辑直观,和你手动处理单个数字的思路类似,而且向量化运算的效率远高于逐元素处理。

方法3:沿用你熟悉的divmod(适合小数据量)

如果你想继续使用divmod的思路,也可以用apply函数逐元素处理,但要注意这个方法在大数据量下效率较低,只适合小数据集:

df['num_col'] = df['num_col'].apply(lambda x: divmod(x, 1)[0]).astype(int)

这里用lambda函数对每个元素执行divmod,然后取返回值的第一个元素(整数部分),最后转成整数类型。

完整测试示例

为了让你更清楚,我把你的测试数据完整实现一遍:

import pandas as pd

# 构造你的DataFrame
data = [
    59.9179, 50.3874, 50.3874, 55.0089, 58.423,
    58.8227, 55.2471, 57.2266, 46.4312, 59.9097, 57.1417
]
df = pd.DataFrame(data, columns=['original_num'])

# 用方法1处理
df['integer_part'] = df['original_num'].astype(int)

# 查看结果
print(df[['original_num', 'integer_part']])

执行后输出的integer_part列就是你想要的整数结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:25