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()
。
鉴于这些 Battery
和 apple
:
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))]
下午好!
长话短说,我正在尝试根据评论数据集对手机的某些功能进行情绪分析。我正在用 .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()
。
鉴于这些 Battery
和 apple
:
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))]