У меня есть dataframe значений.
mydf.head():
Amount Date Description
0 39.95 2017-03-30 Paypal *A2zkidsltd
1 2.39 2017-04-01 Mcdonalds
2 8.03 2017-04-01 Wm Morrison
3 34.31 2017-04-01 Wm Morrison
4 10.56 2017-04-03 Asda Superstore
Я хочу заменить все "*" ничем. Я использую функцию замены pandas в столбце Description.
mydf['Description'].replace('*','', inplace=True)
И посмотрите еще раз на результат:
mydf.head()
0 39.95 2017-03-30 Paypal *A2zkidsltd
1 2.39 2017-04-01 Mcdonalds
2 8.03 2017-04-01 Wm Morrison
3 34.31 2017-04-01 Wm Morrison
4 10.56 2017-04-03 Asda Superstore
Первая транзакция по-прежнему содержит "*".
Это видно для всех транзакций, содержащих "*".
Я просмотрел документацию;
https://pandas.pydata.org/pandas-docs/version/0.22.0/generated/pandas.DataFrame.replace.html
Однако я не вижу, где я ошибаюсь. Какая ошибка в моем коде или моем подходе?
Ты можешь попробовать:
df['Description'] = df['Description'].str.replace('*','')
Кажется, что не существует опции для inplace
поэтому нужно снова назначить column
.
Попробуйте ускользнуть от него - *
является специальным символом :)
mydf['Description'].replace('\*','', inplace=True)
Или, как говорит Сакул,
mydf['Description'].replace('*','', regex=False, inplace=True)