python-3.x - python pandas中数据框的屏蔽字符串和电话号码
问题描述
在这里,我试图屏蔽一个数据框/数据集,其中包含整数和字符串值,如下所示:
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”(任何整数值)列时它不起作用。
注意:我需要对给定的任何文件进行完全屏蔽(应该屏蔽整个值)和部分屏蔽(即,上述文件中的最后三位数字/字符或前三位数字/字符)。
解决方案
转换为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
推荐阅读
- android - 在 android 中 12 小时后执行操作
- c# - 如何通过 C# 反射订阅委托?
- ios - 如何获取不包括透明部分的 UIImage 的平均颜色
- json - 如何重新组合 JSON 以匹配 Flutter 中的数据类型?
- swift - Swift 关联类型不明确
- sql - 连接两个从客户创建日期开始到当前日期结束的连续日期的日期表时遇到问题?
- azure - Azure 数据工厂的逻辑应用连接器未显示现有工厂管道
- mysql - MySQL - 如何根据每年的总和获得最受欢迎的名称?
- python - ErlangC Python 函数
- sql - 使用 SQL 中的连接进行更新不适用于所有行