Есть ли способ заменить все вхождения в Pandas DataFrame? [Дубликат]

Если вы используете функцию обложки Pandas plot() и хотите разместить легенду снаружи, то здесь очень простой способ:

df.myCol.plot().legend(loc='center left', bbox_to_anchor=(1, 0.5))

Мы просто вызываем цепочку legend() после plot().

Результаты выглядят примерно так:

enter image description here [/g0]

5
задан dter 2 June 2016 в 13:38
поделиться

3 ответа

Вам нужно назначить обратно

df = df.replace('white', np.nan)

или передать param inplace=True:

In [50]:
d = {'color' : pd.Series(['white', 'blue', 'orange']),
   'second_color': pd.Series(['white', 'black', 'blue']),
   'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace('white', np.nan, inplace=True)
df

Out[50]:
    color second_color  value
0     NaN          NaN    1.0
1    blue        black    2.0
2  orange         blue    3.0

Большинство pandas ops возвращают копию, и большинство из них имеют параметр inplace, который обычно по умолчанию False

11
ответ дан EdChum 21 August 2018 в 13:20
поделиться

Учитывая, что это лучший результат Google при поиске «Pandas replace не работает», я хотел бы также упомянуть, что:

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

Мне потребовалось 30 минут, чтобы, надеюсь, я сказал следующее лицо 30 минут.

2
ответ дан user1761806 21 August 2018 в 13:20
поделиться

Когда вы используете df.replace(), он создает новый временный объект, но не изменяет ваш. Вы можете использовать одну из двух следующих строк для изменения df:

df = df.replace('white', np.nan)
df.replace('white', np.nan, inplace = True)
3
ответ дан ysearka 21 August 2018 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: