我有一个CSV文件名为SSN列有这样的价值观
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
如何通过价值做我循环并用星号代替只是第一个五位数(只),并保持hiphens的是什么?
对我先生一样,这反而会前6个字符之前删除一切与你的新格式替换它们。
emp_pd["SSN"] = emp_pd["SSN"].apply(lambda x: "***-**" + x[6:])
你可以简单地实现这一目标用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)
把你的星号在前面,然后抓住最后4位数字。
new_ssn = '***-**-' + emp_pd["SSN"][-4:]
您可以使用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