Pandas条件分组

3
我有一个如下的数据框:
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的行。因此,我需要的结果是:

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

我在考虑是否应该使用groupby,但我不确定。请帮忙看一下吧?

2个回答

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

我喜欢这个解决方案。 - ansev

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接