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

Python中如何不四舍五入将小数转整数?含DataFrame场景

Pandas将小数转换为整数(不进行四舍五入)

需求说明

把DataFrame中的数值列(A、B)的小数直接截断为整数,保留整数部分,不做四舍五入处理。

原始DataFrame

Date       A      B
01-01-2022  12.87   0.67
02-01-2022  3.8976  123.98
03-01-2022  6.7654  23.98
04-01-2022  2.897   0.098
05-01-2022  3.986   0.76
06-01-2022  1.09    12.45

期望输出

Date    A   B
01-01-2022  12  0
02-01-2022  3   123
03-01-2022  6   23
04-01-2022  2   0
05-01-2022  3   0
06-01-2022  1   12

解决方案

方法1:用astype(int)直接转换

对于正数来说,astype(int)会直接截断小数部分,完全匹配需求:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Date': ['01-01-2022', '02-01-2022', '03-01-2022', '04-01-2022', '05-01-2022', '06-01-2022'],
    'A': [12.87, 3.8976, 6.7654, 2.897, 3.986, 1.09],
    'B': [0.67, 123.98, 23.98, 0.098, 0.76, 12.45]
})

# 转换指定数值列
df[['A', 'B']] = df[['A', 'B']].astype(int)

方法2:用numpy.floor()(适配负数场景)

如果数据包含负数,需要严格向下取整的话,可以用numpy.floor()再转整数:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Date': ['01-01-2022', '02-01-2022', '03-01-2022', '04-01-2022', '05-01-2022', '06-01-2022'],
    'A': [12.87, 3.8976, 6.7654, 2.897, 3.986, 1.09],
    'B': [0.67, 123.98, 23.98, 0.098, 0.76, 12.45]
})

df[['A', 'B']] = np.floor(df[['A', 'B']]).astype(int)

注意点

  • 若数据含负数:astype(int)是向零取整(比如-1.8转为-1),numpy.floor()是向下取整(比如-1.8转为-2),按需选择即可。
  • 转换后列类型会变为int,满足整数格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:30:15