This is a follow up to this question
import pandas as pd
df = pd.DataFrame(
{
'a': ['A', 'A', 'B', 'B', 'B', 'C'],
'b': ['A', 'A', 'B', 'B', 'B', 'C'],
'hole': [True, True, True, False, False, True]
}
)
print(df)
groups = df.groupby(['a', 'b']) # "A", "B", "C"
agg_groups = groups.agg({'hole':lambda x: all(x)}) # "A": True, "B": False, "C": True
original_index_filtered = agg_groups.index[agg_groups['hole']]
original_filtered = df[df[['a', 'b']].isin(original_index_filtered)]
print(original_filtered)
now outputs
a b hole
0 A A True
1 A A True
2 B B True
3 B B False
4 B B False
5 C C True
a b hole
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Seems like I am not doing it right when there is a multi index involved.