【问题标题】:pandas: removing multiple str from a str熊猫:从字符串中删除多个字符串
【发布时间】:2023-01-11 20:23:45
【问题描述】:

我正在尝试从列值中删除 str 列表,例如:

char_lst = ['1.', '1)', '2.', '2)', '3.', '3)']  # so on with the digit format

我试过了:

import re
df['X'].apply(lambda x: re.sub('|'.join(replace_char), '', re.escape(x))).astype(str)

但它给了我错误:

re.error: unbalanced parenthesis at position 4

【问题讨论】:

    标签: python-3.x pandas replace python-re


    【解决方案1】:

    使用Series.str.replace

    import re
    
    df = pd.DataFrame({'X': ['2)A', 'B', 'C', 'A', 'D', 'E', 'F', 'D', 'H', 'I1.', 'J3)']})
    
    char_lst = ['1.', '1)', '2.', '2)', '3.', '3)']
    
    df['X'] = df['X'].str.replace("|".join(re.escape(x) for x in char_lst),'', regex=True)
    print  (df)
        X
    0   A
    1   B
    2   C
    3   A
    4   D
    5   E
    6   F
    7   D
    8   H
    9   I
    10  J
    

    编辑:如果需要在数字使用后使用.)删除数字:

    df['X'] = df['X'].str.replace("d+[.)]",'', regex=True)
    

    【讨论】:

    • 如果还有 4.4) 怎么办?如何使列表动态化或使用更好的方法?
    • @Jlow - 所以需要df['X'] = df['X'].str.replace("d+[.)]",'', regex=True)
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2019-03-06
    • 2021-03-16
    • 2021-09-25
    • 2019-03-14
    • 2013-08-20
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多