Я бы хотел отфильтровать pFD DataFrame по строкам, в которых группа данной конкретной строки имеет минимальное количество для определенного значения столбца.
Например, возвращать только те строки / группы df, где ['c2Группа ',' c3 '] имеет как минимум 2 строки со значением' c1 '1:
df = pd.DataFrame({'c1':[0,1,0,1,1,0], 'c2':[0,0,0,1,1,1], 'c3':[0,0,0,1,1,1]})
Результат должен возвращать только строки с индексами 3,4,5, поскольку только [c2, c3] = [1,1] группа имеет как минимум 2 строки со значением 'c1' 1.
df.groupby(['c2','c3']).filter(lambda x: x['c1'].count() >= 2)
не возвращает требуемый результат.Мне нужно, чтобы счет применялся конкретно к счету 1 с, а не только к любому значению 'c1'.
Следующее работает, но я не уверен, как сделать его более питоническим:
s = df.groupby(['c2','c3']).apply(lambda x: x[x['c1']==1].count() >= 2).all(axis=1)
df = df.reset_index().set_index(['c2','c3']).loc[s[s].index].reset_index().set_index(['index'])