首页 > 解决方案 > 如何在日志输出中屏蔽熊猫数据框列?

问题描述

我必须记录一些包含敏感信息的熊猫数据框输出。我宁愿不在日志中包含此信息或在终端中打印。

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

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

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

标签: pythonpandassecuritylogging

解决方案


如果要保留原始 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

推荐阅读