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是解决此问题的一个过于复杂的解决方案,但我仍将共享一个链接: