以较低的精度删除重复项

时间:2017-05-29 14:46:08

标签: python pandas

我有一个带有字符串列和浮点列的pandas DataFrame我想使用 viewPager = (VerticalViewPager) rootView.findViewById(R.id.viewpager); viewPager.setPageTransformer(false, new ViewPager.PageTransformer() { @Override public void transformPage(View page, float position) { if (position >= 0.5F && position <= 1F) { float progressStart = 0.5f; float progressEnd = 1f; float progressDelta = progressEnd - progressStart; float progress = (position - progressStart)/progressDelta; if(progress>1)progress=1; if(progress<0)progress=0; float endValue = 1f; float startValue = 0.8f; float delta = endValue - startValue; progress = 1-progress; float currentScale = startValue + delta*progress; ViewCompat.setPivotY(page,0); ViewCompat.setScaleX(page, currentScale); ViewCompat.setScaleY(page, 0.9F); ViewCompat.setTranslationY(page, 0); } else { ViewCompat.setScaleX(page, 1.0F); //- width ViewCompat.setScaleY(page, 0.9F); //- height } } }); 删除重复项。一些重复项不完全相同,因为低位小数位有一些细微差别。如何以较低的精度删除重复项?

示例:

drop_duplicates

我想得到

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

3 个答案:

答案 0 :(得分:1)

围绕他们

{{1}}

答案 1 :(得分:1)

您可以使用具有给定精度的函数round来围绕您的df。

  

DataFrame.round(decimals = 0,* args,** kwargs)

     

将DataFrame舍入到可变数量的小数位。

例如,您可以通过以下方式应用带有两位小数的回合:

df = df.round(2)

您也可以将其应用于特定列,例如:

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

在舍入后,您可以使用函数drop_duplictes

答案 2 :(得分:0)

使用numpy.trunc来获得您正在寻找的精度。使用pandas duplicated查找要保留的内容。

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