Как удалить дубликаты записей в Pandas DataFrame, приведенные ниже.
a b c d
11216 08-08-2018 2000 SIP
40277 28-08-2018 1000 SIP
44165 02-08-2018 8000 Lump
44165 03-08-2018 5000 Lump
45845 16-08-2018 25000 Lump
45845 18-08-2018 50000 Lump
52730 13-08-2018 10000 Lump
52730 27-08-2018 10000 Lump
53390 20-08-2018 400000 Lump
56180 02-08-2018 1000 Lump
58537 11-07-2018 5000 Lump
58537 22-08-2018 2000 SIP
912813 15-08-2018 160001 Lump
912813 15-08-2018 6000 SIP
85606 16-08-2018 3500 SIP
88327 06-08-2018 5000 SIP
90240 07-08-2018 2000 SIP
Желаемый результат:
a b c d
11216 08-08-2018 2000 SIP
40277 28-08-2018 1000 SIP
44165 02-08-2018 8000 Lump
45845 16-08-2018 25000 Lump
52730 13-08-2018 10000 Lump
53390 20-08-2018 400000 Lump
58537 11-07-2018 5000 Lump
912813 15-08-2018 160001 Lump
912813 15-08-2018 6000 SIP
85606 16-08-2018 3500 SIP
88327 06-08-2018 5000 SIP
90240 07-08-2018 2000 SIP
Условие: remove if a2==a1
и b2<>b1
.
Сначала вам нужно добавить их в список, а затем этот код может удалить дублированные элементы с вашими условиями.
i = 0
while i < len(a)-1 :
if a[i] == a[i+1] and if b[i] != b[s] :
del a[i]
del b[i]
del c[i]
del d[i]
i -= 1
i += 1
Вы можете сортировать, затем использовать duplicated
с условием or
:
res = df.sort_values(['a', 'b'])\
.loc[(~df['a'].duplicated()) | df[['a', 'b']].duplicated(keep=False)]
print(res)
a b c d
0 11216 08-08-2018 2000 SIP
1 40277 28-08-2018 1000 SIP
2 44165 02-08-2018 8000 Lump
4 45845 16-08-2018 25000 Lump
6 52730 13-08-2018 10000 Lump
8 53390 20-08-2018 400000 Lump
9 56180 02-08-2018 1000 Lump
10 58537 11-07-2018 5000 Lump
14 85606 16-08-2018 3500 SIP
15 88327 06-08-2018 5000 SIP
16 90240 07-08-2018 2000 SIP
12 912813 15-08-2018 160001 Lump
13 912813 15-08-2018 6000 SIP
a = 51680
?