如何通过一次操作截断数据帧的系列/列

时间:2019-02-28 06:36:19

标签: python pandas numpy dataframe

有一些操作可以将一列/一系列数据框舍入或舍入或限制,但是如何指定列的精度并截断其余值呢?

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的结果,应该有可以执行的列操作,但看来您只能指定舍入精度。

2 个答案:

答案 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,将其除以得到所需的输出。