熊猫条件分组

时间:2019-09-25 14:16:57

标签: python pandas dataframe conditional-statements selection

我有一个如下数据框:

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,但不确定。我真的可以帮忙吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这是一种方法

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