【问题标题】:filter a dataframe based on partial string values that also have special characters根据也具有特殊字符的部分字符串值过滤数据框
【发布时间】:2020-08-05 06:01:33
【问题描述】:

我正在尝试在数据框列中过滤基于数据框的部分字符串,该部分字符串将与我在列表中的值列表匹配。

问题是一些匹配的字符串中有特殊字符, 例如:

=OEAKPOB|2OEAQPYA0402343|@@EAY632|@@EAY6XF3260| LD93684589|4+EB484K|4+EB481W|4*EBEWRX||=OEAKQJW|VNEAKX74

当我尝试时

pat = '|'.join(criteria_filter['ID'])
df_B = detfile_df[detfile_df['ID'].str.contains(pat)]

我得到一个

error: nothing to repeat

现在我猜这是由于错误或我上面的两行代码无法处理特殊字符。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python-3.x regex pandas


    【解决方案1】:

    您可以在生成器理解中通过re.escape 转义特殊的正则表达式字符:

    import re
    pat = '|'.join(re.escape(x) for x in criteria_filter['ID'])
    

    【讨论】:

    • 谢谢@jezrael,一个类似的问题..如果我的数据框中有以特殊字符开头的字符串,并且我将此df写入csv,csv中的输出会被修改为0/空白吗? (尤其是以 = 符号开头的字符串,因为 = 被视为公式开始?
    • @asimo - 不确定是否理解,您能否更具体地提供示例数据?
    • @asimo - 因为如果以= 开头的字符串不是特殊的正则表达式字符,所以没问题
    • 确定让我检查并相应地还原
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多