4

我可以truncate使用truncate. math但是当试图将相同的函数传递给pandas df列时,我得到了一个错误。

import math
import pandas as pd

X = 1.1236

X = math.trunc(1000 * X) / 1000;

#Output
1.123

但是当使用pandas df

d = ({
    'X' : [1.1234,1.1235],           
    })

df = pd.DataFrame(data=d)

df['X'] = math.trunc(1000 * df['X']) / 1000;

错误:

df['X'] = math.trunc(1000 * df['X']) / 1000;

TypeError: type Series doesn't define __trunc__ method
4

3 回答 3

6

您可以使用applymap

trunc = lambda x: math.trunc(1000 * x) / 1000;

df.applymap(trunc)
于 2019-06-27T00:16:24.097 回答
4

我相信实现这一目标的最简单方法是.astype(int) 在您的示例中使用:

df[x] = ((df[x]*1000).astype(int).astype(float))/1000
于 2020-08-16T23:48:32.560 回答
2

尝试更改df['X'] = math.trunc(1000 * df['X']) / 1000;df['X'] =[math.trunc(1000 * val) / 1000 for val in df['X']]. 希望能帮助到你

于 2019-06-27T00:20:57.467 回答