如何在列中保存str.contains()的总和?

2024-10-05 14:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到csv_文件['pony_sort']中对应的单元格不是Twilight,我想保存在我的csv_文件['dialog']列中找到Twilight/Sparkle/Twilight Sparkle的次数。我知道这是无效的语法,但是否有可能通过这种方式获得我想要的,如果是,我可以更改什么?谢谢

更新:

example of data: 
pony_sort | dialog | 
--------------------
twilight  | "....twilight"
applejack | "twilight, twilight, twilight!"

在上面的示例中,第一行不计算“twilight”,因为小马排序=twilight。第二行的count=3,因为pony_sort列中没有提到twilight,twilight被提到了三次

twilight_mentions = csv_file[csv_file['dialog'].str.contains("Twilight|Sparkle|Twilight Sparkle").sum() for i in csv_file[pony_sort] != "twilight"]

Tags: 文件ofcsvdataexample方式语法sort
1条回答
网友
1楼 · 发布于 2024-10-05 14:27:49

请记住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'在遇到twil...时尝试查找第一个选项twilight sparkle。我不知道确切的正则表达式实现,但是,这是需要注意的

相关问题 更多 >