Как отбросить строки в фрейме данных, если условие не выполнено, по крайней мере, указанное количество столбцов - PullRequest
1 голос
/ 07 марта 2020

Я хотел бы удалить строки в кадре данных, если условие не выполнено хотя бы 3 раза.

то есть, если хотя бы 2 столбца>> 10

column_1.   column_2.   column_3.   
7           11          15
3           10          9
20          9           15

, это приведет к

column_1.   column_2.   column_3.   
7           11          15
20          9           15 

реальный кадр данных содержит много столбцов

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Если вы работаете с целыми числами / числами с плавающей запятой, вы можете использовать следующее:

df['col_count'] = (df>=10).sum(axis=1)
filtered = df[df['col_count'] >= 2] #.drop(columns='col_count')

Вывод:

    col_1   col_2   col_3   col_count
0       7      11      15           2
2      20       9      15           2

Конечно, вы можете добавить следующую строку или удалить ее выше, чтобы удалить дополнительный столбец, который считает количество столбцов для каждой строки со значениями> = 10

filtered = filtered.drop(columns='col_count')
0 голосов
/ 07 марта 2020

Вы можете сделать что-то вроде этого:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(5,10)*20)
col = df>=10
count = col.sum(axis=1)
df.loc[cout<=3,:]
...