Python DataFrame: как удалить строки, в которых содержится более одного столбца? - PullRequest
3 голосов
/ 21 июня 2019

У меня есть фрейм данных, в котором столбцы должны быть фиктивными (для каждой строки должен быть заполнен только один столбец). Однако в данных есть некоторый «шум»: в некоторых строках заполнено несколько столбцов. Я хочу отбросить эти строки.

Предположим, что DataFrame выглядит следующим образом:

  a       b        c        d  
0 NaN     1        NaN      NaN
1 1       2        3        4  
2 1       1        NaN      NaN 
3 NaN     NaN      1        NaN
4 1       NaN      1        NaN

Итак, мой ожидаемый результат состоит в том, что строки [1,2,4] удаляются. Вы можете сказать, что я принимаю только те строки, где количество значений NaN равно number_of_columns - 1.

Есть ли способ сделать это в пандах?

Ответы [ 2 ]

3 голосов
/ 21 июня 2019

Использование:

df[(df.shape[1]-1)==(df.isna().sum(axis=1))]

    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN
1 голос
/ 21 июня 2019

Этот доставит вас туда.Вы просто посчитаете количество нулей в строке и нарежете свой кадр на основании этого.

df[df.notna().sum(axis=1) <= 1]
    a    b    c   d
0 NaN  1.0  NaN NaN
3 NaN  NaN  1.0 NaN
...