pandas .replace удаляет первое значение, но не добавляет второе - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь заменить данные в столбце .csv: «1 (1789-1790)» на один год: «1789»

Сначала я читаю .csv:

df = pd.read_csv('congress1.csv', delimiter = ';', names = ['Name', 'Years', 'Position', 'Party', 'State', 'Congress'], header = 0)

Затем я запускаю .replace для данных в столбце = 'Конгресс' и предоставляю ему новую строку:

df['Congress'] = df['Congress'].replace('1(1789-1790)', '1789', inplace=True)

Однако, когда я печатаю свои данные, в этом столбце отображается «Нет».

1 Ответ

0 голосов
/ 04 ноября 2018

При использовании inplace=True метод replace возвращает None (который затем переназначается) и изменяет объект на месте.

Демо-версия:

>>> s = pd.Series([1,2,3])
>>> s
>>> 
0    1
1    2
2    3
dtype: int64
>>> 
>>> res = s.replace(1, 2, inplace=True)
>>> res is None
>>> True
>>> s
>>> 
0    2
1    2
2    3
dtype: int64

s был изменен на месте, res - это None!

Вы можете просто пропустить inplace=True часть или не переназначить на df['Congress'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...