Вставить Null в столбец A на основе значений индекса

У меня есть список с номерами индексов l1, и я хочу заменить значения в столбце A на NaN на основе этих номеров индексов.

Текущие данные

Index                A
0        Reviewer: Newbie | 35-44 on Treatment for 1 
1        Reviewer: 45-54 on Treatment for less than 1 
2        Reviewer: Ocetech| 65-74 Male on Treatment 
3        Reviewer: virleo| 55-64 Female on Treatment 
4        Reviewer: Diane perrin| 65-74 on Treatment for

l1 = [1, 3, 4]

Ожидаемый результат

Index                A
0        Reviewer: Newbie | 35-44 on Treatment for 1 
1        NaN 
2        Reviewer: Ocetech| 65-74 Male on Treatment 
3        NaN
4        NaN

Используйте df.loc[l1,'A'] = np.nan.

Space Impact 01.11.2018 14:32
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
329
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте .loc для поиска индекса в l1 в вашем фрейме данных, а затем назначьте np.nan следующим образом:

import numpy as np
df.loc[l1,'A'] = np.nan

Просто к деталям после воспроизведения вашего DataFrame ..

Также импортируйте numpy, чтобы установить значения Nan на желаемый индекс.

import pandas as pd
import numpy as np

Ваш DataFrame:

$ df
                                                A
0     Reviewer: Newbie | 35-44 on Treatment for 1
1    Reviewer: 45-54 on Treatment for less than 1
2      Reviewer: Ocetech| 65-74 Male on Treatment
3     Reviewer: virleo| 55-64 Female on Treatment
4  Reviewer: Diane perrin| 65-74 on Treatment for

Ваш проиндексированный список:

$ l1
[1, 3, 4]

На основе loc. Для столбца A установить индекс на Nan с помощью Numpy ..

df.loc[l1,'A'] = np.nan

Результат:

print(df)
                                             A
0  Reviewer: Newbie | 35-44 on Treatment for 1
1                                          NaN
2   Reviewer: Ocetech| 65-74 Male on Treatment
3                                          NaN
4                                          NaN

Небольшое примечание: если у вас нет длинного списка Index, который нужно заменить на NaN, вы можете напрямую указать их, а не передать список Index.

$ df.loc[[1,3,4],'A'] = np.nan
$ print(df)
                                             A
0  Reviewer: Newbie | 35-44 on Treatment for 1
1                                          NaN
2   Reviewer: Ocetech| 65-74 Male on Treatment
3                                          NaN
4                                          NaN

Другой способ:

$ df.rename(index = {1:np.nan, 3:np.nan, 4:np.nan}, inplace=True)

Другие вопросы по теме