Вы можете создать следующую маску для выбора строк:
import pandas as pd
data = [[2, 0, 0, 10],
[0, 3, 6, 0],
[4, 3, 2, 0],
[3, 2, 6, 3],
[1, 1, 1, 0]]
df = pd.DataFrame(data=data, columns=list('ABCD'))
mask = (df.values > 1).sum(axis=1) > 2
print(df[mask])
Вывод
A B C D
2 4 3 2 0
3 3 2 6 3
Основная идея создания маски заключается в созданиимассив логических значений, где True
означает, что значение больше 1, затем суммируйте эти значения по строкам, а если сумма больше 2, это означает, что было больше двух значений выше 1.
В качестве альтернативы выможет использовать numpy.count_nonzero для создания маски:
import pandas as pd
import numpy as np
data = [[2, 0, 0, 10],
[0, 3, 6, 0],
[4, 3, 2, 0],
[3, 2, 6, 3],
[1, 1, 1, 0]]
df = pd.DataFrame(data=data, columns=list('ABCD'))
mask = np.count_nonzero(df.values > 1, axis=1) > 2
print(df[mask])
Выход
A B C D
2 4 3 2 0
3 3 2 6 3