有没有办法混淆或屏蔽数据框列中的值?

Posted

技术标签:

【中文标题】有没有办法混淆或屏蔽数据框列中的值?【英文标题】:Is there a way to Obfuscate or Mask values in a Data Frame column? 【发布时间】:2019-09-12 01:36:46 【问题描述】:

我正在尝试屏蔽 DataFrame 列中的所有 IP。我有一个包含 IP 地址的列的 DataFrame。出于隐私和安全原因,当 DataFrame 显示为表格或使用 Plotly 绘制图形时,我需要隐藏\屏蔽前 2 个八位字节。你认为哪种方法最好?我能想到的唯一方法是制作一个额外的列并使用 apply 函数将 IP 处理为 X.X.1.1 格式。

【问题讨论】:

df['masked_IP'] = df.IP.str.replace('^[^.]+\.[^.]+', 'x.x') 【参考方案1】:

您的方法似乎没有错。您还可以复制数据集并加密副本(以防您要保存新数据集)。

或者,如果您只是想保护隐私,您可以使用匿名技术。当您想保密时,它将在更大的项目中为您提供帮助,这里有一些链接

https://en.wikipedia.org/wiki/Data_anonymization https://iapp.org/resources/article/guide-to-basic-data-anonymization-techniques/

【讨论】:

【参考方案2】:
import pandas as pd
from pandas.compat import StringIO

print(pd.__version__)

csvdata = StringIO("""IP
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13""")

df = pd.read_csv(csvdata)
df['IP'] = df['IP'].apply(lambda x: "X.X."+".".join(x.split('.')[2:4]))
print(df)

会产生

0.24.2
         IP
0  X.X.1.10
1  X.X.1.11
2  X.X.1.12
3  X.X.1.13

这可能是在DataFrame 中“编辑”数据的最佳方式

【讨论】:

以上是关于有没有办法混淆或屏蔽数据框列中的值?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 删除数据框列中的多个字符

将火花数据框列中的值提取到新的派生列中

Pyspark 通过使用另一列中的值替换 Spark 数据框列中的字符串

将数据框列中的值附加到列表

比较熊猫数据框列中的值时出现类型错误

根据字典替换数据框列中的值不起作用[重复]