python - заменить первые пять символов в столбце звездочками - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть столбец с именем SSN в CSV-файле со значениями, подобными этим

289-31-9165

Мне нужно перебрать значения в этом столбце и заменить первые пять символов, чтобы он выглядел следующим образом

***-**-9165

Вот код, который у меня пока есть:

emp_file = "Resources/employee_data1.csv"

emp_pd = pd.read_csv(emp_file) 

new_ssn = emp_pd["SSN"].str.replace([:5], "*")

emp_pd["SSN"] = new_ssn

Как мне перебрать значение и заменить только первые пять цифр (только) звездочками и оставить дефисы как есть?

Ответы [ 4 ]

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

Вы можете просто добиться этого с помощью метода replace ():

Пример кадра данных:

заимствует у @AkshayNevrekar ..

>>> df
           ssn
0  111-22-3333
1  121-22-1123
2  345-87-3425

Результат:

>>> df.replace(r'^\d{3}-\d{2}', "***-**", regex=True)
           ssn
0  ***-**-3333
1  ***-**-1123
2  ***-**-3425

ИЛИ

>>> df.ssn.replace(r'^\d{3}-\d{2}', "***-**", regex=True)
0    ***-**-3333
1    ***-**-1123
2    ***-**-3425
Name: ssn, dtype: object

ИЛИ:

df['ssn'] = df['ssn'].str.replace(r'^\d{3}-\d{2}', "***-**", regex=True)
0 голосов
/ 08 февраля 2019

Вы можете использовать regex

df = pd.DataFrame({'ssn':['111-22-3333','121-22-1123','345-87-3425']})

def func(x):
    return re.sub(r'\d{3}-\d{2}','***-**', x)

df['ssn'] = df['ssn'].apply(func)    

print(df)

Выход:

           ssn                                                                                                                                 
0  ***-**-3333                                                                                                                                 
1  ***-**-1123                                                                                                                                 
2  ***-**-3425  
0 голосов
/ 08 февраля 2019

Как и в случае с Мистером Ме, вместо этого будут удалены все элементы до первых 6 символов и заменены их новым форматом.

emp_pd["SSN"] = emp_pd["SSN"].apply(lambda x: "***-**" + x[6:])
0 голосов
/ 08 февраля 2019

Поставьте звездочки впереди, затем возьмите последние 4 цифры.

new_ssn = '***-**-' + emp_pd["SSN"][-4:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...