python pandas 中数据帧的屏蔽字符串和 phone 数字
masking string and phone number for dataframe in python pandas
在这里,我试图屏蔽数据 frame/dataset,其中包含整数列和字符串值,如下所示:
sno,Name,Type 1,Type 2,phonenumber
1,Bulbasaur,Grass,Poison,9876543212
2,Ivysaur,Grass,Poison,9876543212
3,Venusaur,Grass,Poison,9876543212
这是我正在使用的代码,下面的代码对于字符串值工作正常,它很好地屏蔽了但对于整数它没有屏蔽:
import pandas as pd
filename = "path/to/file"
columnname= "phonenumber"
valuetomask = "9876543212"
column_dataset1 = pd.read_csv(filename)
print(column_dataset1)
# if(choice == "True"):
#masking for particular string/number in a column
column_dataset1[columnname]=column_dataset1[columnname].mask(column_dataset1[columnname] == valuetomask,"XXXXXXXXXX")
print(column_dataset1)
# masking last four digits
column_dataset1[columnname]=column_dataset1[columnname].str[:-4]+"****"
print(column_dataset1)
上面的代码非常适用于字符串,但是当我给出“phonenumber”(任何整数值)列时它不起作用。
注意:我需要对给定的任何文件进行完全屏蔽(应屏蔽整个值)和部分屏蔽(即上面文件中的最后三个 digits/characters 或前三个 digits/characters) .
将您的 phone 数字转换为字符串,然后尝试屏蔽:
mask_len = 5 # length of digits to mask from right side
column_dataset1['phonenumber'] = (
column_dataset1['phonenumber'].astype(str) # convert to string
.str[:-mask_len]+"*" * mask_len # masking digits
)
转换为 str
并替换最后四位数字:
>>> df['phonenumber'].astype(str).str.replace(r'\d{4}$' , '****', regex=True)
0 987654****
1 987654****
2 987654****
Name: phonenumber, dtype: object
这与@babakfifoo 的建议相同:
>>> df['phonenumber'].astype(str).str[:-4] + '****'
0 987654****
1 987654****
2 987654****
Name: phonenumber, dtype: object
在这里,我试图屏蔽数据 frame/dataset,其中包含整数列和字符串值,如下所示:
sno,Name,Type 1,Type 2,phonenumber
1,Bulbasaur,Grass,Poison,9876543212
2,Ivysaur,Grass,Poison,9876543212
3,Venusaur,Grass,Poison,9876543212
这是我正在使用的代码,下面的代码对于字符串值工作正常,它很好地屏蔽了但对于整数它没有屏蔽:
import pandas as pd
filename = "path/to/file"
columnname= "phonenumber"
valuetomask = "9876543212"
column_dataset1 = pd.read_csv(filename)
print(column_dataset1)
# if(choice == "True"):
#masking for particular string/number in a column
column_dataset1[columnname]=column_dataset1[columnname].mask(column_dataset1[columnname] == valuetomask,"XXXXXXXXXX")
print(column_dataset1)
# masking last four digits
column_dataset1[columnname]=column_dataset1[columnname].str[:-4]+"****"
print(column_dataset1)
上面的代码非常适用于字符串,但是当我给出“phonenumber”(任何整数值)列时它不起作用。
注意:我需要对给定的任何文件进行完全屏蔽(应屏蔽整个值)和部分屏蔽(即上面文件中的最后三个 digits/characters 或前三个 digits/characters) .
将您的 phone 数字转换为字符串,然后尝试屏蔽:
mask_len = 5 # length of digits to mask from right side
column_dataset1['phonenumber'] = (
column_dataset1['phonenumber'].astype(str) # convert to string
.str[:-mask_len]+"*" * mask_len # masking digits
)
转换为 str
并替换最后四位数字:
>>> df['phonenumber'].astype(str).str.replace(r'\d{4}$' , '****', regex=True)
0 987654****
1 987654****
2 987654****
Name: phonenumber, dtype: object
这与@babakfifoo 的建议相同:
>>> df['phonenumber'].astype(str).str[:-4] + '****'
0 987654****
1 987654****
2 987654****
Name: phonenumber, dtype: object