Страницы

Поиск по вопросам

суббота, 21 марта 2020 г.

Как удалить столбцы, у которых кол-во пропущенных значений больше 2 согласно прилагаемого алгоритма

#python #pandas #dataframe


Алгоритм удаления по заданию следующий:


найдите все такие столбцы (метод .isna() + подвыборка с условием)
определите их названия (поймите как выцепить названия и сохраните их в массив, т.е.
по цепочке примените методы .index, .tolist() или .values)
"дропните их" (используйте метод .drop (имена столбцов))
результат сохраните в новой табличке (например, data_1), исходную менять не нужно


Сделала по-другому:

cols_to_delete = df2.columns[df2.isna().sum() > 2]
df2.drop(cols_to_delete, axis = 1, inplace = True)


Что мне непонятно: как сделать задание по вышеуказанному алгоритму #1 - #4.

df = pd.DataFrame({
    'col1': [23, 54, pd.np.nan, 87],
    'col2': [45, 39, 45, 32],
    'col3': [pd.np.nan, pd.np.nan, 76, pd.np.nan,]
})

    


Ответы

Ответ 1



Исходный DF: In [92]: df Out[92]: col1 col2 col3 0 23.0 45 NaN 1 54.0 39 NaN 2 NaN 45 76.0 3 87.0 32 NaN Решение 1: In [93]: thresh = 2 In [94]: new = df.loc[:, df.isna().sum().le(thresh)] Решение 2: In [96]: new = df.drop(columns=df.columns[df.isna().sum() > thresh]) Результат: In [95]: new Out[95]: col1 col2 0 23.0 45 1 54.0 39 2 NaN 45 3 87.0 32

Комментариев нет:

Отправить комментарий