十进制.对序列中的值进行舍入时无效操作错误



我正在使用的系列:

import pandas as pd
from decimal import Decimal, BasicContext
df = pd.Series([14978.22,
16025.429160000002,
209.97803999999996,
618.20369,
605.607,
1431.0916,
30.53575,
23.77272,
404.79368999999997,
55580.152319999994
])
df2 = df.apply(str).apply(Decimal, context=BasicContext)

我想使用"ROUND_HALF_UP"(这是用于 BasicContext 的舍入(将 df 中的所有值四舍五入到 5 位数字。所以,我这样做:

df2.apply(round, ndigits=5)

但是,这会引发错误:

回溯(最近一次调用(:

文件 ",第 1 行,在 df2.apply(round, ndigits=5(

文件 "C:\Users\Guest\AppData\Roaming\Python\Python36\site-packages\pandas\core\series.py", 第 3194 行,在 申请中 映射 = lib.map_infer(值, f, 转换=convert_dtype(

文件 "pandas/_libs/src\inference.pyx",第 1472 行,在 pandas._libs.lib.map_infer

文件 "C:\Users\Guest\AppData\Roaming\Python\Python36\site-packages\pandas\core\series.py", 3181行,在 f = lambda x: func(x, *args, **kwds(

无效操作:类"十进制"。无效操作'

但是,四舍五入到 4 位数字有效:

df2.apply(round, ndigits=4)

为什么会发生这种情况,我该如何解决这个问题?

您是否尝试过捕获decimal.InvalidOperation异常?你应该有一个tryexcept.

try:
# your code 
except DecimalException as e:
print(e)

最新更新