Pandas.Series.Str.Find 与列表中的 x 混合

Pandas.Series.Str.Find mixed in with x in a list

下午好!

长话短说,我正在尝试根据评论数据集对手机的某些功能进行情绪分析。我正在用 .loc 函数协调它,它以前工作过,但这是一个特定的列表而不是字符串。我正在尝试将此 link 用于列表中的任何 x,其中 x 是一个列表。

这是我的:

Battery = ['battery', 'charge', 'juice', 'talk time', 'hours', 'minutes']
batt = apple['Reviews'].str.lower().str.find(x in Battery)!=-1

返回的错误是:

AttributeError: Can only use .str accessor with string values.

我这样做是因为它不喜欢我把 Battery 而不是 x 放在 Battery 中。

有什么建议吗?再次感谢!

如果我 运行 分配的变量,预期输出将是所有具有任何关键字的行。 (电池内的 x)。因此,任何包含充电、果汁等内容的行都会弹出。

如果apple['Review']只是一列字符串,可以检查str.contains()

鉴于这些 Batteryapple:

Battery = ['battery', 'charge', 'juice', 'talk time', 'hours', 'minutes']
apple = pd.DataFrame({'Review': ['abc battery xyz', 'foo bar', 'orange juice bar', 'talk time']})

#              Review
# 0   abc battery xyz
# 1           foo bar
# 2  orange juice bar
# 3         talk time

这将是 batt 输出:

batt = apple[apple['Review'].str.lower().str.contains('|'.join(Battery))]

#              Review
# 0   abc battery xyz
# 2  orange juice bar
# 3         talk time

如果apple['Review']是一列列表,你可以先用str.join(' ')[=加入它们36=] 在检查之前 str.contains():

batt = apple[apple['Review'].str.join(' ').str.lower().str.contains('|'.join(Battery))]