Изменить значение None в столбце на строку «None» в Python - PullRequest
0 голосов
/ 26 апреля 2018

Некоторые столбцы в моем наборе данных имеют пропущенные значения, которые представлены как None (Nontype, а не строка). Некоторые другие пропущенные значения представлены как «N / A» или «Нет». Я хочу иметь возможность обрабатывать эти пропущенные значения в методе ниже.

df.loc[df.col1.isin('None', 'Yes', 'No'), col1] = 'N/A'

Теперь моя проблема заключается в том, что None - это значение, а не строка, и поэтому я не могу использовать none в качестве 'None'. Я где-то читал, что мы можем преобразовать это значение в строку 'None'.

Может ли кто-нибудь дать мне понять, как это сделать?

Примечание 1:

Просто для ясности объяснения, если я запускаю ниже код:

df.col1.unique()

Я получаю этот вывод:

array([None, 'No', 'Yes'], dtype=object)

Примечание 2:

Я знаю, что могу обработать пропущенное или нулевое значение с помощью isnull(), но в этом случае мне нужно использовать .isin() метод

Пример кадра данных:

f = {'name': ['john', 'tom', None, 'rock', 'dick'], 'DoB': [None, '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'Address': ['NY', 'NJ', 'PA', 'NY', None]}
df1 = pd.DataFrame(data = f)

Когда вы запустите код ниже, вы увидите None как значение.

df1.Address.unique()
output: array(['NY', 'NJ', 'PA', None], dtype=object)

Я хочу, чтобы None отображался как 'None'

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Создать пример df:

df = pd.DataFrame({"A": [None, 'Yes', 'No', 1, 3, 5]})

, который выглядит как:

     A
0  None
1   Yes
2    No
3     1
4     3
5     5

Замените ваш None на None и сделайте аргументы для замены списком (вот как работает isin):

df.loc[df.A.isin([None, 'Yes', 'No']), 'A'] = 'N/A'

, который возвращает:

     A
0  N/A
1  N/A
2  N/A
3    1
4    3
5    5
0 голосов
/ 26 апреля 2018

Существует разница между null/None и 'None'. Таким образом, вы можете изменить исходное утверждение на

df.loc[df.col1.isin([None, 'Yes', 'No']), col1] = 'N/A'

То есть возьми апострофы за None

Или вы можете сначала найти все индексы, в которых существуют нулевые или нулевые значения, а затем выбрать все эти строки на основе индекса. И тогда вы можете использовать свое оригинальное утверждение.

df["col1"].loc[df["col1"].isnull()] = 'None'
...