Панды заменяют метод для серии, не работающей на '-' - PullRequest
0 голосов
/ 23 мая 2019

Sample of data I'm running the replace method on

Я бы хотел df ['series']. Replace ('-', '') на серии в кадре данных pandas, но ничего не происходит, когда я запускаю метод. Я предполагаю, что это связано с тем фактом, что тире является оператором (возможно, неправильно использует этот термин). Я пытался поиграть с Regex, но не могу найти решение. (FYI DataType столбца - Объект)

df['series'] = df['series'].str.replace('-','')
df['series'] = df['series'].str.replace(r'-','')
df['series'] = df['series'].str.replace('\-','')
df['series'] = df['series'].replace('-','')
df['series'] = df['series'].replace(r'-','')
df['series'] = df['series'].replace('\-','')

И все вышеперечисленное с Regex, установленным в False

1 Ответ

2 голосов
/ 23 мая 2019

Настройка

Это не обычные тире chr(45).Это chr(8211)

df = pd.DataFrame(dict(series=['hi–hi', 'ho_ho', 'hidy–ho', 'oh–no']))

  • pandas.Series.str.replace будет использовать regex по умолчанию
  • pandas.Series.replace будет не использовать regex по умолчанию

Необходимость regex=True заключается в том, что она позволяет замене соответствовать части строки.В противном случае он совпадает только со всей строкой.

Это работает для меня

df['series2'] = df['series'].replace(chr(8211), '', regex=True)
df

    series series2
0    hi–hi    hihi
1    ho_ho   ho_ho
2  hidy–ho  hidyho
3    oh–no    ohno

Как и

df['series3'] = df['series'].str.replace(chr(8211), '')
df

    series series2 series3
0    hi–hi    hihi    hihi
1    ho_ho   ho_ho   ho_ho
2  hidy–ho  hidyho  hidyho
3    oh–no    ohno    ohno

Или

df['series4'] = [s.replace(chr(8211), '') for s in df['series']]
df

    series series2 series3 series4
0    hi–hi    hihi    hihi    hihi
1    ho_ho   ho_ho   ho_ho   ho_ho
2  hidy–ho  hidyho  hidyho  hidyho
3    oh–no    ohno    ohno    ohno
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...