我无法立即找出已经给出的答案,所以我编写了一个简单的脚本来做同样的事情。它采用具有重复值的索引并通过一次比较两个来删除它们。
检查下面的代码-
import pandas as pd
data = {'X':['A', 'B', 'A', 'A', 'A', 'B', 'C', 'A', 'A'],
'Y': [3, 2, 12, 7, 10, 1, 4, 3, 5]}
data = pd.DataFrame(data)
mask = data['X'] == data['X'].shift()
to_check = data.loc[mask].index.tolist()
for i, _ in enumerate(to_check):
index = to_check[i]
if data.iloc[index]['Y'] > data.iloc[index - 1]['Y']:
data.drop(index - 1, axis=0, inplace=True)
data.reset_index(inplace=True, drop=True)
else:
data.drop(index, axis=0, inplace=True)
data.reset_index(inplace=True, drop=True)
to_check = [value - 1 for value in to_check]
print(data)
# OUTPUT
X Y
0 A 3
1 B 2
2 A 12
3 B 1
4 C 4
5 A 5