我正在尝试删除基于groupby和number of True values的行。对于每个组,如果它们只有一个真值(sum() = 1),我希望删除那一行。
import pandas as pd
df = pd.DataFrame({'id': [1,1,1,2,2,2,3,3,3], 'value': [True, True, False, True, False, False, False, False, True]})
print (df)
id value
0 1 True
1 1 True
2 1 False
3 2 True
4 2 False
5 2 False
6 3 False
7 3 False
8 3 True
df.groupby('id')['value'].sum()
Out[571]:
id
1 2.0
2 1.0
3 1.0id 1和3与条件匹配,但是我如何删除这些单个true行,从而使数据帧变为:
print (df)
id value
0 1 True
1 1 True
2 1 False
3 2 False
4 2 False
5 3 False
6 3 False发布于 2018-08-01 01:26:31
您可以使用布尔掩码:
m1 = df.groupby('id')['value'].transform('sum') == 1
m2 = df['value']
df = df[~(m1 & m2)].reset_index(drop=True)
print(df)
id value
0 1 True
1 1 True
2 1 False
3 2 False
4 2 False
5 3 False
6 3 Falsehttps://stackoverflow.com/questions/51618887
复制相似问题