我在Pandas Dataframe中对Decimals()
进行舍入时遇到了问题。使用quantize()
时,round()
方法也不起作用。到目前为止,我一直在寻找一个没有运气的解决方案。
round()
不做任何事情,我认为它是针对浮点数的
因为它不是DataFrame函数,所以quantize()
不起作用
有什么想法吗?
发布于 2019-02-20 04:19:58
由于pandas没有量化方法,我使用以下方法来解决这个问题:
out.applymap(lambda x: x.quantize(dc.Decimal('1.00')))
发布于 2019-12-24 05:35:59
要将小数舍入为2位有效数字,例如:
round(df['yourSeries'].astype('float'), 2)
或者,如果您只想要一个int:
round(df['yourSeries'].astype('float'))
发布于 2020-01-13 09:13:15
在@Juanito的回答上做了一点扩展
有了我的数据,我得到了一个InvalidOperation: [<class 'decimal.InvalidOperation'>]
这似乎是因为我的输入数据超过了默认精度28:
gdf_temp['latitude'][0]
Decimal('44.5001088968049742788934963755309581756591796875')
这是可行的:
getcontext().prec = 64
gdf_temp['longitude'] = gdf_temp['longitude'].apply(Decimal)
gdf_temp['latitude'] = gdf_temp['latitude'].apply(Decimal)
gdf_temp['longitude'] = gdf_temp['longitude'].apply((lambda x: x.quantize(Decimal('1.00000'))))
gdf_temp['latitude'] = gdf_temp['latitude'].apply((lambda x: x.quantize(Decimal('1.00000'))))
gdf_temp['latitude'][0]
小数(‘44.50011’)
https://stackoverflow.com/questions/54773447
复制相似问题