i可以使用math
中的truncate
函数truncate
单独的浮子。但是,当试图将相同功能传递给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
您可以使用applymap
trunc = lambda x: math.trunc(1000 * x) / 1000;
df.applymap(trunc)
我相信实现此目的的最简单方法是使用 .astype(int)
在您的示例中,将是:
df[x] = ((df[x]*1000).astype(int).astype(float))/1000
尝试将df['X'] = math.trunc(1000 * df['X']) / 1000;
更改为df['X'] =[math.trunc(1000 * val) / 1000 for val in df['X']]
。希望它有帮助
一种简单的方法是将其转换为整数值,例如:
df['X'] = df['X'].astype(int)