1

如何删除下面给出的 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

条件是:去掉 ifa2==a1b2<>b1

4

2 回答 2

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
于 2018-08-31T12:01:00.307 回答
0

首先,您需要将它们添加到列表中,然后此代码可以根据您的条件删除重复的项目。

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 
于 2018-08-31T11:28:11.440 回答