如何根据单列/多列值在给定公差的数据帧中查找重复行



以下是通过比较基于列值的两个数据帧来列出重复值的建议解决方案。如何通过考虑给定的容差来查找数据帧中包含的重复行,并将其列在新的数据帧中?

df
YearDeci  Year  Month  Day  Hour  ...  Seconds   Mb     Lat     Lon  
0     1669.510  1669      6    4     0  ...        0  NaN  33.400  73.200    
1     1720.535  1720      7   15     0  ...        0  NaN  28.700  77.200    
2     1780.000  1780      0    0     0  ...        0  NaN  35.000  77.000    
3     1669.511  1669      6    4     0  ...        0  NaN  33.400  73.200    
4     1803.665  1803      9    1     0  ...        0  NaN  30.300  78.800
5     1803.388  1803      5   22    15  ...        0  NaN  30.600  78.600.

如果我们寻找基于YearDeci且具有0.002容忍级别的重复行

expected output
1669.510  1669      6    4     0  ...        0  NaN  33.400  73.200   3     
1669.511  1669      6    4     0  ...        0  NaN  33.400  73.200

或者只是它的索引

index1 index2
0      3
  1. 首先根据要查找彼此位于0.002内的行的列对数据帧进行排序
  2. 然后,您可以使用.diff()来查找行之间的差异,并过滤.diff() is < 0.002。您还必须使用.shift(-1)获取其上方的另一行:

df = df.sort_values('YearDeci')
s = df['YearDeci'].diff() < 0.002
df[s | s.shift(-1)]
Out[1]: 
YearDeci  Year  Month  Day  Hour  ...  Seconds  Mb   Lat     Lon
0  1669.510  1669      6    4     0  ...        0 NaN  33.4  73.200
3  1669.511  1669      6    4     0  ...        0 NaN  33.4  73.200

获取索引值:

df[(s | s.shift(-1))].index.tolist()
# OR [*df[(s | s.shift(-1))].index]
[0, 3]

相关内容

  • 没有找到相关文章

最新更新