pandas.Series.str.contains() 找不到系列中存在的字符串
pandas.Series.str.contains() is not finding a string which exists in the Series
我正在尝试将列表中的一堆名称与 Pandas DataFrame 的其中一列中的名称相匹配。 DataFrame的一小部分如下所示:
“对象 ID”列中的值有一些空格,我使用以下行删除了这些空格:
df["Object ID"] = df["Object ID"].str.strip()
我正在使用以下行搜索“对象 ID”列:
df[df["Object ID"].str.contains('EM* LkHA 115') == True]
尽管 'EM* LkHA 115' 存在于数据框中,但上面的行返回一个空数据框,如下所示:
知道我做错了什么吗?如果有帮助,我很乐意提供任何进一步的信息。
提前致谢!
您必须转义“*”字符。
df[df["Object ID"].str.contains('EM\* LkHA 115')]
你也不需要 == True
正如@MustafaAydın 在下面的评论中所说,您可以使用正则表达式库动态执行此操作。
import re
df[df["Object ID"].str.contains(re.escape('EM* LkHA 115'))]
我正在尝试将列表中的一堆名称与 Pandas DataFrame 的其中一列中的名称相匹配。 DataFrame的一小部分如下所示:
“对象 ID”列中的值有一些空格,我使用以下行删除了这些空格:
df["Object ID"] = df["Object ID"].str.strip()
我正在使用以下行搜索“对象 ID”列:
df[df["Object ID"].str.contains('EM* LkHA 115') == True]
尽管 'EM* LkHA 115' 存在于数据框中,但上面的行返回一个空数据框,如下所示:
知道我做错了什么吗?如果有帮助,我很乐意提供任何进一步的信息。
提前致谢!
您必须转义“*”字符。
df[df["Object ID"].str.contains('EM\* LkHA 115')]
你也不需要 == True
正如@MustafaAydın 在下面的评论中所说,您可以使用正则表达式库动态执行此操作。
import re
df[df["Object ID"].str.contains(re.escape('EM* LkHA 115'))]