【发布时间】:2025-12-29 02:00:06
【问题描述】:
我正在努力尝试在 pandas 数据框上获得标准回合。我知道 round() 函数的行为与设计预期的不同。
我能否就如何实现 excel 中的标准舍入获得一些帮助。我想一次性将其应用于工作中的整个 pandas 数据框。我相信我正在尝试做某种“从零舍入一半”(抱歉缺乏技术)。我对确切的方法漠不关心(希望避免循环),但只需要一个可以轻松应用于整个 pandas 数据框的解决方案。
这是一个简单的数据框。每列的四舍五入结果应为 1,2,3,4,5,6,7。
data = {
'val1': [i/2 for i in range(1,15,2)],
'val2': [i/2 for i in range(1,15,2)],
'val3': [i/2 for i in range(1,15,2)],
'val4': [i/2 for i in range(1,15,2)]
}
df = pd.DataFrame(data)
我一直在尝试将此函数应用于适用于单列的数据框,但在整个数据框上出现错误:“TypeError: cannot convert the series to
def round_adjusted(n, decimals=0):
def round_half_up(n, decimals=0):
multiplier = 10 ** decimals
return math.floor(n*multiplier + 0.5) / multiplier
rounded_abs = round_half_up(abs(n), decimals)
return math.copysign(rounded_abs, n)
df['val1'].map(lambda x: round_adjusted(x,0))
输出[62]:
0 1.0 1 2.0 2 3.0 3 4.0 4 5.0 5 6.0 6 7.0 Name: val1, dtype: float64
【问题讨论】:
-
你能举一个简单的例子来说明输入数字和想要的结果吗?比如 6.54 -> 7.00?
-
我想要“远离零的一半”(或向无穷大的一半):如果 y 的分数正好是 0.5,那么 q = y + 0.5 如果 y 是正数,并且 q = y − 0.5 如果 y 为负数。例如,23.5 舍入为 24,-23.5 舍入为 -24。
-
您是否要将数字四舍五入到最接近的 0.5?
-
从零四舍五入。就像你在日常数学中四舍五入一样。我不想要银行家的四舍五入
标签: python python-3.x pandas dataframe rounding