Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以较低的精度删除重复项_Python_Pandas - Fatal编程技术网

Python 以较低的精度删除重复项

Python 以较低的精度删除重复项,python,pandas,Python,Pandas,我有一个带有字符串列和浮点列的熊猫数据框架,我想使用删除重复项来删除重复项。有些重复项并不完全相同,因为在小数位上有一些细微的差异。如何以较低的精度删除重复项 例如: import pandas as pd df = pd.DataFrame.from_dict({'text': ['aaa','aaa','aaa','bb'], 'result': [1.000001,1.000000,2,2]}) df result text 0 1.000001 aaa 1 1.00000

我有一个带有字符串列和浮点列的熊猫数据框架,我想使用
删除重复项
来删除重复项。有些重复项并不完全相同,因为在小数位上有一些细微的差异。如何以较低的精度删除重复项

例如:

import pandas as pd
df = pd.DataFrame.from_dict({'text': ['aaa','aaa','aaa','bb'], 'result': [1.000001,1.000000,2,2]})
df
     result text
0  1.000001  aaa
1  1.000000  aaa
2  2.000000  aaa
3  2.000000   bb
我想去

df_out = pd.DataFrame.from_dict({'text': ['aaa','aaa','bb'], 'result': [1.000001,2,2]})
df_out
     result text
0  1.000001  aaa
1  2.000000  aaa
2  2.000000   bb
包围他们

df.loc[df.round().drop_duplicates().index]

     result text
0  1.000001  aaa
2  2.000000  aaa
3  2.000000   bb
包围他们

df.loc[df.round().drop_duplicates().index]

     result text
0  1.000001  aaa
2  2.000000  aaa
3  2.000000   bb

您可以使用函数
round
以给定精度对df进行舍入

DataFrame.round(小数=0,*args,**kwargs)

将数据帧四舍五入到可变的小数位数

例如,您可以通过以下方式应用两位小数的四舍五入:

df = df.round(2)
您还可以将其应用于特定列,例如:

df = df.round({'result': 2})

舍入后,您可以使用函数
drop\u duplictes

以给定精度使用函数
舍入
,以舍入df

DataFrame.round(小数=0,*args,**kwargs)

将数据帧四舍五入到可变的小数位数

例如,您可以通过以下方式应用两位小数的四舍五入:

df = df.round(2)
您还可以将其应用于特定列,例如:

df = df.round({'result': 2})

四舍五入后,您可以使用函数
drop\u duplictes

使用
numpy.trunc
获得所需的精度。使用
pandas
duplicated
查找要保留的熊猫

df[~df.assign(result=np.trunc(df.result.values * 100)).duplicated()]

使用
numpy.trunc
获得所需的精度。使用
pandas
duplicated
查找要保留的熊猫

df[~df.assign(result=np.trunc(df.result.values * 100)).duplicated()]

Binning是解决此问题的一个过于复杂的解决方案,但我仍将共享一个链接:Binning是解决此问题的一个过于复杂的解决方案,但我仍将共享一个链接: