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

如何优雅地将DataFrame列中数值向下取整至最近偶数?

优雅处理DataFrame数值列:向下取整至最近偶数

针对你给出的DataFrame,要实现将所有数值向下取整至最近的偶数,这里提供几种简洁高效的方法:

方法一:地板除结合乘法

利用Python的地板除运算符//,先将数值除以2后向下取整,再乘以2即可得到不大于原数的最大偶数,这是最直接的实现方式:

import pandas as pd

data = [291.79, 499.31, 810.93, 1164.25]
df = pd.DataFrame(data, columns=['Onset'])

# 处理逻辑
df['Onset'] = (df['Onset'] // 2) * 2
# 转换为整数类型(可选,根据需求)
df['Onset'] = df['Onset'].astype(int)

运行后得到的结果完全符合预期:

Onset
0    290
1    498
2    810
3   1164

方法二:使用numpy的floor函数

如果习惯用numpy的数值处理函数,也可以通过np.floor先对除以2后的结果向下取整,再乘以2:

import pandas as pd
import numpy as np

data = [291.79, 499.31, 810.93, 1164.25]
df = pd.DataFrame(data, columns=['Onset'])

df['Onset'] = np.floor(df['Onset'] / 2) * 2
df['Onset'] = df['Onset'].astype(int)

方法三:位运算(适合先取整为整数的场景)

如果需要先将浮点数转换为整数,再处理偶数,可以用位运算& ~1(等价于奇数减1、偶数保持不变):

import pandas as pd
import numpy as np

data = [291.79, 499.31, 810.93, 1164.25]
df = pd.DataFrame(data, columns=['Onset'])

# 先向下取整为整数,再做位运算
df['Onset'] = np.floor(df['Onset']).astype(int) & ~1

以上三种方法都能优雅实现需求,其中方法一最为简洁,无需额外导入numpy库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:32:05