如何用Decimal创建Pandas系列?

cjm*_*671 5 python numpy decimal python-3.x pandas

我正在计算一些给出FloatingPointErrors的标准偏差.我想尝试将数据系列转换为Decimal(使用https://docs.python.org/3/library/decimal.html),看看这是否解决了我的问题.

我似乎无法制作一只大熊猫系列decimal.

我怎么能走正常pd.Seriesfloat64,并转换成pd.Seriesdecimal,这样我可以这样做:

Series.pct_change().ewm(span=35, min_periods=35).std()
Run Code Online (Sandbox Code Playgroud)

小智 5

from decimal import Decimal

df['col_a'] = df['col_a'].apply(lambda x: Decimal(str(x)))
Run Code Online (Sandbox Code Playgroud)


Ser*_*Dev 2

像这样的东西会起作用吗?

def column_round(decimals):
     return partial(Series.round, decimals=decimals)

df.apply(column_round(2))
Run Code Online (Sandbox Code Playgroud)

或者让np.vectorize我们使用decimal.quantize函数来进行舍入,这将使变量保留为小数而不是np.float64

npquantize = np.vectorize(decimal.Decimal.quantize)
Run Code Online (Sandbox Code Playgroud)

我一直在研究它,这似乎可以解决 pct_change 的问题

ts.diff().div(ts.shift(1))
Run Code Online (Sandbox Code Playgroud)

  • 如果我理解正确的话,这仍然使用浮点运算;我想强制执行十进制算术。 (2认同)