Pandas Dataframe 如何在不四舍五入的情况下截去浮点小数点?

gei*_*ate 6 python truncate dataframe pandas

我在两个靠近的数据框中有经度和纬度。如果我运行精确的相似性检查,例如

test_similar = test1_latlon.loc[~test1_latlon['cr'].isin(test2_latlon['cr'])]
Run Code Online (Sandbox Code Playgroud)

我遇到了很多失败,因为很多数字都偏离了小数点后第五位。我想截断小数点后第三位。我见过人们格式化,因此它显示被截断,但我想更改实际值。使用round()四舍五入数据,我会得到更多错误,那么有没有办法只删除小数点后 3 位呢?

con*_* yu 10

您可能想使用 numpy.trunc:

import numpy as np
import pandas as pd

df = pd.DataFrame([[1.2366, 1.2310], [1, 1]])
df1 = np.trunc(1000 * df) / 1000
print(df1, type(df1))
#        0      1
# 0  1.236  1.231
# 1  1.000  1.000 <class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)

请注意,df1 仍然是一个 DataFrame 而不是 numpy.array


Nor*_*man 3

按照此处的建议,您可以执行以下操作:

x = 1.123456
float( '%.3f'%(x) )
Run Code Online (Sandbox Code Playgroud)

如果您想要更多小数位,只需将 3 更改为您需要的任何数字即可。

  • 好吧,是的,这些是我找到的大部分答案。我想知道是否有一些熊猫的方法可以做到这一点,但这现在应该可行。谢谢你! (2认同)