Заменить символ в столбце Python DataFrame - PullRequest
0 голосов
/ 23 мая 2018

Простой кадр данных replace, показанный ниже, не работает.
Столбец NewPhone содержит то же значение, что и исходный столбец.

import pandas as pd
SF = pd.read_csv(r"xxx.csv")
SF['NewPhone'] = SF['Phone'].replace("(",'xxx')
print(SF['NewPhone'])

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Метод Series.replace принимает аргумент regex, который по умолчанию равен False.Установите True.Кроме того, если заменяемая строка интерпретируется как шаблон регулярного выражения, нам нужно экранировать открывающую скобку.

df.phone.replace("\(", 'xxx', regex=True)

0    xxx999)-63266654
Name: phone, dtype: object

Настройка из @ EdChum

df = pd.DataFrame({'phone':['(999)-63266654']})
0 голосов
/ 23 мая 2018

replace ищет точные совпадения (по умолчанию, если вы не передадите regex=True, но вам нужно будет избегать скобок - см. Ответ @ piRSquared), вам нужно str.replace:

SF['NewPhone'] = SF['Phone'].str.replace("(",'xxx')

, который заменит все вхождения переданной строки новой строкой

Пример:

In[20]:
df = pd.DataFrame({'phone':['(999)-63266654']})
df

Out[20]: 
            phone
0  (999)-63266654

In[21]:    
df['phone'].str.replace("(",'xxx')

Out[21]: 
0    xxx999)-63266654
Name: phone, dtype: object

Если мы попробуем replace, то нетпроисходит совпадение:

In[22]:
df['phone'].replace("(",'xxx')

Out[22]: 
0    (999)-63266654
Name: phone, dtype: object

См. ответ @ piRSquared о том, как заставить replace работать как положено (я не хочу каннибализировать его ответ)

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