【问题标题】: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')

标签: python pandas jupyter-notebook plotly data-analysis


【解决方案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 中“编辑”数据的最佳方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2012-01-10
      • 2023-03-05
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多