我想保存在csv_file ['dialog']列中找到Twilight / Sparkle / Twilight Sparkle的次数,因为csv_file ['pony_sort']中的相应单元格不是暮光之城。我知道这是无效的语法,但是有可能以这种方式获得我想要的内容吗?如果是这样,我可以更改什么?谢谢!
更新:
example of data:
pony_sort | dialog |
--------------------
twilight | "....twilight"
applejack | "twilight, twilight, twilight!"
在上面的示例中,由于pony_sort = twilight,第一行将不算“ twilight”。第二行的计数为3,因为pony_sort列中未提及暮光,而暮光则被提及三次。
twilight_mentions = csv_file[csv_file['dialog'].str.contains("Twilight|Sparkle|Twilight Sparkle").sum() for i in csv_file[pony_sort] != "twilight"]
答案 0 :(得分:1)
请紧记series.str.contains
每行计数一次,无论它包含多少个搜索到的单词。您正在寻找的是series.str.count
from re import IGNORECASE
twilight_mentions = (
csv_file[csv_file['pony_sort'].ne('twilight')]['dialog']
.str.count('twilight sparkle|twilight|sparkle', flags=IGNORECASE)
.sum()
)
输出
3
如果不需要,可以跳过re
标志。
请注意可选模式的顺序,如果您将示例模式与'twilight|sparkle|twilight sparkle'
一起使用,则包含'twilight, twilight sparkle'
的行将返回3而不是2。但是,模式'twilight sparkle|twilight|sparkle'
会尝试在遇到twilight sparkle
时找到第一个选项twil...
。我不知道确切的正则表达式实现,但这是要注意的事情。