用python将表格中一列数据脱敏
时间: 2023-12-23 20:06:03 浏览: 140
要将表格中的一列数据进行脱敏,可以使用Python的pandas库进行操作。下面是一个示例代码:
```python
import pandas as pd
import hashlib
# 读取表格数据
df = pd.read_excel('data.xlsx')
# 将需要脱敏的列转换为字符串类型
df['需要脱敏的列名'] = df['需要脱敏的列名'].astype(str)
# 对每个值进行hash加密
df['需要脱敏的列名'] = df['需要脱敏的列名'].apply(lambda x: hashlib.sha256(x.encode('utf-8')).hexdigest())
# 保存修改后的表格
df.to_excel('data_processed.xlsx', index=False)
```
在上面的示例中,我们首先使用pandas库读取了一个Excel表格数据,然后将需要脱敏的列转换为字符串类型。接着,我们使用hashlib库对每个值进行SHA-256加密处理,最后将修改后的表格保存到一个新文件中。这样就可以保护数据隐私了。
相关问题
用Python将表格中的一列姓名脱敏
要将表格中的一列姓名脱敏,可以使用Python的pandas库进行操作。下面是一个示例代码:
```python
import pandas as pd
import random
# 读取表格数据
df = pd.read_excel('data.xlsx')
# 将需要脱敏的列转换为字符串类型
df['需要脱敏的列名'] = df['需要脱敏的列名'].astype(str)
# 将每个姓名随机替换为一个由9个*组成的字符串
def mask_name(name):
if len(name) == 2: # 如果姓名只有两个字,则脱敏后显示姓和一个*
return name[0] + '*'
elif len(name) > 2: # 如果姓名大于两个字,则脱敏后显示姓和5个*,再加上名的首字母
return name[0] + '*'*5 + name[-1]
else:
return name
df['需要脱敏的列名'] = df['需要脱敏的列名'].apply(lambda x: mask_name(x))
# 保存修改后的表格
df.to_excel('data_processed.xlsx', index=False)
```
在上面的示例中,我们首先使用pandas库读取了一个Excel表格数据,然后将需要脱敏的列转换为字符串类型。接着,我们定义了一个mask_name函数,用于将每个姓名随机替换为一个由9个*组成的字符串。对于只有两个字的姓名,我们将脱敏后的结果显示为姓和一个*;对于大于两个字的姓名,我们将脱敏后的结果显示为姓和5个*,再加上名的首字母。最后,我们使用apply函数将mask_name函数应用到需要脱敏的列中,最终将修改后的表格保存到一个新文件中。
用python re.sub将表格中的一列姓名脱敏
假设表格数据如下:
| 姓名 | 年龄 | 性别 |
|------------|------|------|
| 张三 | 25 | 男 |
| 李四 | 30 | 女 |
| 王五 | 28 | 男 |
可以使用re.sub()函数将姓名列脱敏。具体步骤如下:
1. 读取表格数据,并将姓名列提取出来。
```python
import pandas as pd
df = pd.read_excel('data.xlsx')
names = df['姓名']
```
2. 对每个姓名进行脱敏处理。
```python
import re
for i in range(len(names)):
name = names[i]
name = re.sub(r'.', '*', name) # 将姓名中的每个字符替换为 *
names[i] = name
```
3. 将脱敏后的姓名列更新到原表格中。
```python
df['姓名'] = names
df.to_excel('data.xlsx', index=False)
```
这样就可以将表格中的姓名列脱敏了。
阅读全文