【问题标题】:How can I mask a pandas dataframe column in logging output?如何在日志输出中屏蔽熊猫数据框列?
【发布时间】:2019-06-13 05:32:53
【问题描述】:

我不得不记录一些包含敏感信息的 pandas 数据帧输出。我宁愿不在日志中包含此信息或在终端中打印。

我通常会编写一个小函数,它可以接受一个字符串并用正则表达式对其进行屏蔽,但我在使用数据帧时遇到了麻烦。无论如何,是否有为了记录而掩盖数据框中的一列敏感信息?我在下面尝试的方法更改了数据框,使该列无法使用。

def hide_by_pd_df_columns(dataframe,columns,replacement=None):
    '''hides/replaces a pandas dataframe column with a replacement'''
    for column in columns:
        replacement = '*****' if replacement is None else replacement
        dataframe[column] = replacement
    return dataframe

我想要发生的是 ***** 掩码仅存在于日志记录中,而不存在于其余操作中。

【问题讨论】:

  • 仅在您记录时调用该函数,对于其他所有内容,只需使用原始数据帧。
  • 谢谢@Ricky Kim 我试过了。我还尝试从原始数据框中创建一个新的“仅显示”变量,然后在其上调用该函数。出于某种原因,如果我在代码中的任何位置调用数据帧上的函数,它会随处更改数据帧,即使在我调用它之前打印或记录的地方也是如此。
  • 确保在制作“仅显示”变量时调用了df.copy
  • 天啊。就是这样!谢谢!让它成为一个答案,我可以选择它。

标签: python pandas security logging


【解决方案1】:

如果您想保留原始 df,请确保 df.copy 数据框:

def hide_by_pd_df_columns(dataframe,columns,replacement=None):
    '''hides/replaces a pandas dataframe column with a replacement'''
    df=dataframe.copy()
    for column in columns:
        replacement = '*****' if replacement is None else replacement
        df[column] = replacement
    return df

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 2014-08-11
    • 2021-08-27
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2013-02-23
    相关资源
    最近更新 更多