У меня есть следующий фрейм данных (фактические столбцы в фрейме данных больше 30)
ID col1 col2 col3 col4
1 a## b## HO HO
2 c## d23 c## HO
3 a## k## z## s#
4 c## b12 a12 c12
5 b## HO z## HO
Я хочу создать новую строку фильтрации данных, имеющую
все строки, заканчивающиеся на «##», и если одна из ячеек в строке содержит «HO», я хочу пропустить это и вернуть строку, если остальные столбцы содержат строку, заканчивающуюся ##
В приведенном выше случае новый кадр данных будет выглядеть так:
ID col1 col2 col3 col4
1 a## b## HO HO
3 a## k## z## s#
5 b## HO z## HO
В настоящее время я делаю
m = np.logical_and.reduce([
[x.endswith('##') for x in df[c] ] for c in df.columns if x!='HO'] )
Но df [m] дает только одну следующую строку, а не две другие
3 a## k## z##
Как я могу это исправить?