【问题标题】:Replace second group of a regex match on a pandas dataframe替换熊猫数据帧上的第二组正则表达式匹配
【发布时间】:2020-06-05 19:46:27
【问题描述】:

我有一个大约 1000 行的数据框,我的要求是将出现在 username: 之后的所有字符替换为一个通用字符串(比如“用户”)。

我正在使用以下适合我的问题的正则表达式,我可以匹配第二组中我想用“用户”替换的所有用户名

正则表达式:

"(?i)(\busername\b\s?|\buname\s?)+[;|:]
(\s?[a-z-A-Z0-9@:!+=#$%^&*-]{5,})"

测试数据:

 username : user111
    uname : user212

预期输出:

username : users
uname : users

我还想在大型数据集上执行此操作,因此我正在寻找是否有任何有效的方法来实现此目标。

【问题讨论】:

    标签: python regex pandas dataframe


    【解决方案1】:

    我确定您可以为此使用正则表达式,但有时最简单的方法是拆分和连接,例如:

    df = pd.DataFrame({'values':['username : user111','uname : user212']})
    
    df['values'].apply(lambda x: ': '.join([x.split(':')[0], 'users']))
    

    或者如果您想避免使用 lambda:

    df['values'].str.split(':').str.get(0) + ': users'
    

    输出

                 values
    0  username : users
    1     uname : users
    

    【讨论】:

    • 谢谢。但是我想将特定出现的模式替换为常见字符串,因为我正在处理机器学习任务,这就是我选择正则表达式的原因。所以我想对密码做同样的操作。出现在单词 password: 之后的字符串将被替换为另一个类似于 username 的常见字符串。那么还有其他方法可以实现吗?
    • 你可以建立一个字典并用它来替换 {regex1:'replace_value1',regex2:replace_value2'}
    猜你喜欢
    • 2017-05-19
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2018-04-28
    • 2012-11-23
    相关资源
    最近更新 更多