【问题标题】:Delete all Rows Based on Certain Criteria in Python在 Python 中根据某些条件删除所有行
【发布时间】:2021-02-04 09:51:01
【问题描述】:

我有一个如下所示的数据框:

subject     session
  1           1:1
  1           2:1
  1           3:1
  1           3:2

我想要做的是,如果会话中有第二次尝试的实例(例如 3:2),那么我想删除同时具有该会话的第一次和第二次尝试的行。所以在这个例子中我想告诉 python 删除 3:1 和 3:2

【问题讨论】:

    标签: python pandas conditional-statements


    【解决方案1】:

    类似这样的:

    In [1479]: df[['session1', 'session2']] = df.session.str.split(':', expand=True)
    
    In [1493]: df[df.groupby(['session1'])['session2'].transform('size').eq(1)].drop(['session1', 'session2'], axis=1)
    Out[1493]: 
       subject session
    0        1     1:1
    1        1     2:1
    

    【讨论】:

    • @code_newbie 如果答案有帮助,请考虑至少投票。
    • @code_newbie 如果答案有帮助,请至少upvote
    【解决方案2】:

    你可以这样做:

    from pandas import DataFrame as df
    
    dataframe = df(data={'A': [1, 2, 3], 'B': [3, 4, 5], 'C': [6, 7, 8 ]})
    new_dataframe = dataframe[dataframe.B <= 3]
    
    In [1]: from pandas import DataFrame as df
    
    In [2]: dataframe = df(data={'A': [1, 2, 3], 'B': [3, 4, 5], 'C': [6, 7, 8 ]})
    
    In [3]: dataframe
    Out[4]: 
       A  B  C
    0  1  3  6
    1  2  4  7
    2  3  5  8
    
    In [5]: new_dataframe = dataframe[dataframe.B <= 3]
    
    In [6]: new_dataframe
    Out[7]: 
       A  B  C
    0  1  3  6
    

    来源:kite.com

    【讨论】:

      【解决方案3】:

      您要提取会话并删除重复项:

      df['session1'] = df['session'].str.extract('^([^:]+)' )
      df.drop_duplicates(['subject','session1'], keep=False)
      

      输出:

         subject session session1
      0        1     1:1        1
      1        1     2:1        2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2021-02-23
        • 2022-12-17
        • 1970-01-01
        • 2020-08-11
        • 1970-01-01
        相关资源
        最近更新 更多