很抱歉有一个基本的问题,对python / pandas来说很新。
我正在尝试从我的数据库创建一个列,该列返回True或False,以确定另一列是否包含字符串列表中的任何(不是全部)字符串。目前我的代码如下所示:
keywords_list = ["foo, bar, ..etc]
df['relevant'] = df['Description'].isin(keywords_list)
我知道我的'Description'列包含列表中的一些值,但它返回all为false。我看过类似的stackoverflow问题(见下文),他们都说要做我正在做的事情。但是pandas文档(也在下面)说,只有当它包含列表中的所有值时才会起作用。是否有一个我可以使用的函数,如果列包含列表中的任何值,它将返回?请帮忙!
Filter out rows based on list of strings in Pandas https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html
答案 0 :(得分:1)
使用pandas.Series.str.contains
df['Description'].str.contains('|'.join(keywords_list))
答案 1 :(得分:1)
您可能需要使用split分隔单词,然后使用isin
df = pd.DataFrame({'Description': ['foo bar blah', 'new foo', 'newfoo', 'bar']})
keywords_list = ["foo", "bar"]
df['Description'].str.split(expand = True).isin(keywords_list).any()