我有一个Pandas数据框,其中包含一个名为money的列,保留两位小数,比如"133.04"。没有三位或更多位小数的数字,只有两位。
我的尝试:Decimal模块
我尝试使用Decimal模块来处理这个问题,但是当我尝试像这样重新采样:
gr_by_price = df['price'].resample(timeframe, how='ohlc')
我明白了
pandas.core.groupby.DataError: No numeric types to aggregate
就在这之前,我检查了数据类型(dtype)。
print(type(df['price'][0]))
<class 'decimal.Decimal'>
我对这个库和货币处理都很陌生,也许 Decimal 不是正确的选择? 我该怎么办?
如果我将此列转换为 <class 'numpy.float64'>
,一切都可以正常工作。
更新: 暂时我正在使用这种方法
d.Decimal("%0.2f" % float(d.Decimal("1.04")))
Decimal('1.04')
来自这个问题
np.float64
。只要不超出精度和限制,你就应该没问题。 - EdChum>>> d.Decimal(float(d.Decimal("1.04"))) Decimal('1.04000000000000003552713678800500929355621337890625')
- userqwerty1info()
方法检查数据类型。 - JohnE