我有一个如下数据框:
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,但不确定。我真的可以帮忙吗?
答案 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