以下是通过比较基于列值的两个数据帧来列出重复值的建议解决方案。如何通过考虑给定的容差来查找数据帧中包含的重复行,并将其列在新的数据帧中?
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
- 首先根据要查找彼此位于
0.002
内的行的列对数据帧进行排序 - 然后,您可以使用
.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]