【问题标题】:Pandas conditional groupby熊猫条件分组
【发布时间】:2020-01-25 18:30:24
【问题描述】:

我有一个如下的数据框:

df = pd.DataFrame({'col_1': [6ai,6aii,6aii,6b],
               'col_2': [1,1,5,1],
               'col_3':[True,False,True,False]})

   col_1  col_2 col_3
0    6a1      1    True
1    6aii     1    False
2    6aii     5    True
3    6b       1    False

我想在 col_1 上对这个数据框进行分组,然后只选择 col_3 为 True 的行。如果我在 col_1 中只出现一次值,则无论 col_3 是 True 还是 False,我都想选择该行。 所以我追求的结果是:

   col_1  col_2 col_3
0    6a1      1    True
2    6aii     5    True
3    6b       1    False

我在想我应该使用 groupby,但我不确定。请问我真的需要帮助吗?

【问题讨论】:

    标签: python pandas dataframe conditional-statements selection


    【解决方案1】:

    您可以使用groupby().transform('count') 来查找恰好出现一次的情况:

    df[df['col_3'] | df.groupby('col_1')['col_3'].transform('count').eq(1)]
    

    输出:

      col_1  col_2  col_3
    0   6ai      1   True
    2  6aii      5   True
    3    6b      1  False
    

    【讨论】:

    • 我喜欢这个解决方案
    【解决方案2】:

    这是一种方法

    df[df.col_3|~df.col_1.duplicated(keep=False)]
    Out[344]: 
      col_1  col_2  col_3
    0   6a1      1   True
    2  6aii      5   True
    3    6b      1  False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 2019-03-06
      • 2021-12-13
      • 2019-02-15
      • 2019-05-15
      相关资源
      最近更新 更多