有一些操作可以将一列/一系列数据框舍入或舍入或限制,但是如何指定列的精度并截断其余值呢?
df = pd.DataFrame({"a": (1.21233123, 1.2412304498), 'b':(2.11296876, 2.09870989)})
鉴于此简单的数据框架,可以说我想将a列和b列的精度截断为3而不舍入,我只想删除其余精度。
df = pd.DataFrame({"a": (1.212, 1.241), 'b':(2.112, 2.098)})
这将是df的结果,应该有可以执行的列操作,但看来您只能指定舍入精度。
答案 0 :(得分:1)
您可以使用round
:
In [11]: df.round(3)
Out[11]:
a b
0 1.212 2.113
1 1.241 2.099
要“向下舍入”,可以先从DataFrame中减去0.001 / 2
:
In [12]: (df - 0.0005).round(3)
Out[12]:
a b
0 1.212 2.112
1 1.241 2.098
答案 1 :(得分:1)
使用numpy.trunc
有一些技巧:
import numpy as np
n_precision = 3
df = np.trunc(df * (10 ** n_precision))/ (10 ** n_precision)
print(df)
a b
0 1.212 2.112
1 1.241 2.098
由于np.trunc
丢弃小数部分,因此您首先将数字乘以精度顺序,然后执行np.trunc
,将其除以得到所需的输出。