【问题标题】:How to check if character string is present in column that is not alphanumeric?如何检查字符串是否存在于非字母数字列中?
【发布时间】:2019-06-13 13:28:28
【问题描述】:

我的 df 看起来像这样:

id    col1 
1     [[[[[[['metal', 'soundtracks'], 'jazz'], 'indie'], 'hiphop'], 'rock'], 'pop'], 'electronic']

如果字符 [ 存在,我想应用我的逻辑。我该怎么做?

我试过了:

df['col1'].str.contains('[').any()

但我得到错误:

error: unterminated character set

还尝试了以下组合:

df['col1'].str.contains("[").any()
df['col1'].str.contains("'['").any()
df['col1'].str.contains('"["').any()

都得到相同的错误。

我已确认相关列的 dtype 为 object

我的目标是扫描符号 [ 并应用我的逻辑来清理数据。

if df['col1'].str.contains('[').any():
                 my logic

还尝试强制列像这样字符串,但得到了相同的答案:

df.col1 = df.col1.astype(str)

编辑:

试过这个:

如果 df['col1'].str.contains('[', regex=False).any() == True:

    my logic
else:
    print('all good')

我在 if 语句上得到一个错误,即使该角色存在

【问题讨论】:

    标签: python-3.x pandas character string-matching


    【解决方案1】:

    有问题[是特殊的正则表达式,所以是必要的参数regex=False

    df['col1'].str.contains('[', regex=False).any()
    

    或者通过\转义值:

    df['col1'].str.contains('\[').any()
    

    【讨论】:

    • @RustyShackleford - 有问题吗?
    • 即使使用列值中的字符,我也得到了错误。这可能是什么原因?编辑列以显示完整值
    • @RustyShackleford - 应该有一些列表,在测试之前尝试转换为字符串,例如df['col1'].astype(str).str.contains('[', regex=False).any()
    猜你喜欢
    • 2011-12-20
    • 2019-03-31
    • 2011-12-24
    • 2012-12-27
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多