Как удалить определенные символы из строки? - PullRequest
0 голосов
/ 25 февраля 2019

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

Например, у меня есть данные:

user_id sum
1       10.10
2       154.24
3       19.565.02
4       2.142.00

И ожидаемый результат:

user_id sum
1       10.10
2       154.24
3       19565.02
4       2142.00
5       1.99

Я использую python и pandas lib для анализа данных.

Помогите пожалуйста с регулярным выражением.Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

по-другому с условным созданием столбца с использованием np.where из модуля numpy:

df['sum'] = np.where(df.sum_col.str.count('\.') >= 2, df.sum_col.str.replace('.', '', 1), df.sum_col )

или на любую сумму .:

df['sum'] = pd.to_numeric([i.replace('.','',x) for i,x in 
                           zip(df['sum'],df['sum'].str.count('\.')-1)])

Возвращает:

    sum_col     sum
0   10.10       10.10
1   154.24      154.24
2   19.565.02   19565.02
3   2.142.00    2142.00

Столбец sum является очищенным столбцом

0 голосов
/ 25 февраля 2019

Что ж, если ваши данные сформированы с двумя десятичными знаками в конце, вы можете пропустить регулярное выражение и просто использовать python.

Например, допустим, вы собрали все свои данные в список (отрицаниестрока заголовка) для исправления набора данных можно сделать следующее:

dirty = ['10.10', '154.24', '19.565.02', '2.142.00', '1.99']
# this is a list comprehension that replaces the any '.' with '' in all
# but the last three characters of your strings
clean = [item[:-3].replace('.', '') + item[-3:] for item in dirty]

>>> clean
['10.10', '154.24', '19565.02', '2142.00', '1.99']

Ответ обновлен благодаря @ match.

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