Сбросить строки NaN с ломтиком столбцов в Pandas - PullRequest
0 голосов
/ 27 марта 2020

У меня есть сотни столбцов в DataFrame и я хотел бы удалить строки, где несколько столбцов NaN. Это означает, что для этих столбцов вся строка равна NaN.

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

df = df.drop(df[(df.loc[:,'col1':'col100'].isna()) & (df.loc[:,'col120':'col220'].isna())].index)

Благодарим за любую помощь.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Часть вашего исходного вопроса гласит: "... хотелось бы отбросить строки с несколькими столбцами, равными NaN. Это означает, что для этих столбцов вся строка равна NaN."

Можно ли интерпретировать это как, вы хотите удалить строку, когда вся строка имеет NaN. Если это правда, вы должны быть в состоянии достичь этого путем:

df.dropna(axis = 'rows', how = 'all', inplace = True)

Если это не так, то я неправильно понял ваш вопрос.

0 голосов
/ 27 марта 2020

Вы должны попытаться использовать функцию dropna() с параметром subset, равным столбцам, в которые вы пытаетесь добавить. Вот краткий пример, взятый из Pandas 'документации

df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                   "born": [pd.NaT, pd.Timestamp("1940-04-25"),
                            pd.NaT]})

df
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT

df.dropna(subset=['name', 'born'])

Это дает вам следующее:

       name        toy       born
1    Batman  Batmobile 1940-04-25
...