Вы можете взять сумму по столбцам и отфильтровать столбцы, суммы которых ниже определенного значения, учитывая, что сумма представляет общее количество событий:
threshold = 100
col_sum = df.sum()
filtered_df = df[col_sum[col_sum > threshold].index]
Это сохранит в filtered_df
подмножество исходного DataFrame
без этих столбцов.
Если не все ваши столбцы являются двоичными, то вам необходимо включить дополнительный шаг: выполнить эту операцию только для двоичных столбцов, а затем отменить условие, чтобы найти столбцы, которые не соответствуют вашим критериям :
binary_columns = df.isin([0, 1]).all(axis=0)
binary_df = df.loc[:, binary_columns]
col_sum = binary_df.sum()
filtered_df = df.drop(columns=col_sum[col_sum < threshold].index)