【问题标题】:Python DataFrame : Remove rows based on condition?Python DataFrame:根据条件删除行?
【发布时间】:2021-06-01 12:38:44
【问题描述】:

我有一个包含两列 namescore 的 df。我试图只保留 score > 1 开始的每个用户的行。

    df

            name       score     
    0       bruno        0         
    1       bruno        0         
    2       bruno        15        
    3       bruno        0        
    4       paul         0         
    5       paul         0          
    6       paul         25
    7       paul         0
    8       paul         10
    9       marcus        5
    10      mason         0

最终结果

            name       score            
    2       bruno        15        
    3       bruno        0                 
    6       paul         25
    7       paul         0
    8       paul         10
    9       marcus        5 

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:
    x = df[df.groupby("name")["score"].cumsum().gt(0)]
    print(x)
    

    打印:

         name  score
    2   bruno     15
    3   bruno      0
    6    paul     25
    7    paul      0
    8    paul     10
    9  marcus      5
    

    【讨论】:

    • 非常精益的解决方案。我想一个小小的解释会很棒。干杯!
    • 问题,如果名字的第一个条目是 0 会发生什么?那个条目不是被删除了吗?
    • @FloLie 它正在分组cumsum()。因此,如果组中的第一个条目为 0,则该条目被擦除(直到第一个非零)。
    • @FloLie 我认为是的,基于 “我试图只保留 score > 1 开始的每个用户的行”
    • 我应该更仔细地阅读。你是对的
    猜你喜欢
    • 2016-01-18
    • 1970-01-01
    • 2018-01-11
    • 2022-06-21
    • 2020-03-27
    • 2022-01-14
    • 1970-01-01
    • 2020-10-27
    • 2022-06-15
    相关资源
    最近更新 更多