Почему я не могу изменить значения только в одном столбце pandas? - PullRequest
0 голосов
/ 12 апреля 2020

В моем фрейме данных есть столбец, в котором есть электронные письма, а не электронные.

с этим срезом я могу получить только те поля, которые не имеют электронной почты:

df[~df['email'].str.contains('@', case=False)]['email']

Но когда Я пытаюсь заменить его значением моего предпочтения:

df[~df['email'].str.contains('@', case=False)]['email'] = 'No'

Столбец не получает изменения.

Я не получаю никакой ошибки, только следующее предупреждение:

/home/rockstar/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  """Entry point for launching an IPython kernel.

следует за изображением моего полного кадра данных:

python

Кроме того, df[~df['email'].str.contains('@',case=False)] = 'No' работает отлично, но я теряю данные из остальная часть линии

1 Ответ

1 голос
/ 12 апреля 2020

См. Следующий пример кода.

import pandas as pd
df = pd.DataFrame({"E-mail":["abc@de", "abcde"]})
df['E-mail'].loc[~df['E-mail'].str.contains('@', case = False)] = 'No'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...