Python数据帧:根据条件删除重复项?

2024-09-24 08:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有namesubject列的df。我正在尝试为每个用户删除first值行之后的math值的重复项

            name        subject
    0      mason          first
    1      mason          math
    2      mason          math
    3      mason          first 
    4      mason          chem
    5      mason          math
    6      mason          math
    7       paul          first
    8       paul          chem
    9       paul          first
    10      paul          math
    11      paul          math

最终测向

            name        subject
    0      mason          first
    1      mason          math
    2      mason          first 
    3      mason          chem
    4      mason          math
    5       paul          first
    6       paul          chem
    7       paul          first
    8       paul          math

Tags: 用户namedfmathfirstsubjectpaulchem
1条回答
网友
1楼 · 发布于 2024-09-24 08:26:08

下面是一种使用条件的方法,该条件用于为grouper创建累积和列,并使用df.groupby.apply检查每个组的条件:

c1 = df['subject'].eq("first").cumsum()
out = (df[df.groupby(["name",c1])['subject']
  .apply(lambda x: (~x.duplicated()&x.eq("math")) | x.ne('math'))])

print(out)

     name subject
0   mason   first
1   mason    math
3   mason   first
4   mason    chem
5   mason    math
7    paul   first
8    paul    chem
9    paul   first
10   paul    math

相关问题 更多 >