Заменить запятую и точку в пандах - PullRequest
0 голосов
/ 26 мая 2019

У меня есть столбец с данными, такими как 3.4500,00 EUR.Теперь я хочу сравнить это с другим столбцом, имеющим числа с плавающей точкой, такие как 4000.00.Как мне взять эту строку, удалить EUR и заменить запятую на десятичную, а затем преобразовать в float для сравнения.

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Вы можете использовать регулярные выражения для общих условий, которые будут работать в всех случаях:

# Make example dataframe for showing answer
df = pd.DataFrame({'Value':['3.4500,00 EUR', '88.782,21 DOLLAR']})

              Value
0     3.4500,00 EUR
1  88.782,21 DOLLAR

Используйте str.replace с регулярным выражением:

df['Value'].str.replace('[A-Za-z]', '').str.replace('.', '').str.replace(',', '.').astype(float)

0    34500.00
1    88782.21
Name: Value, dtype: float64

Пояснение:

  • str.replace('[A-Za-z]', '') удаляет все буквенные символы
  • str.replace('.', '') удаляет точку .
  • str.replace(',', '.') заменяет запятую на точку
  • astype(float) преобразует его из типа объекта (строки) в число с плавающей точкой
0 голосов
/ 26 мая 2019

Вот мое решение:

фиктивные данные:

         amount     amount2
0   3.4500,00EUR    4000
1   3.600,00EUR     500

use apply (), а затем преобразование типа данных в число с плавающей точкой

data['amount'] = data['amount'].apply(lambda x: x.replace('EUR', '')).apply(lambda x: x.replace('.', '')).apply(lambda x: x.replace(',', '.')).astype('float')

результат:

    amount    amount2
0   34500.0     4000
1   3600.0      500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...