首页 > 解决方案 > 计算一列数据中的精确(不区分大小写)字符串,不包括与其他文本存在字符串匹配的单元格

问题描述

我想计算包含精确字符串的 CSV 文件列中的所有单元格,如果可能的话最好使用 pandas 并使用 Python。我不想包含包含字符串但也包含其他字符的单元格,并且我需要它不区分大小写。

我目前正在使用df['columnName'].str.contains('someString', case=False).sum(),但它也计算包含其他文本的单元格。我觉得这应该是一个常用的功能,但我似乎无法在网上找到任何适合我正在寻找的东西,所以任何建议都会非常感激。

例子:

如果我的 CSV 文件有这样的内容:

水果
1 苹果
2 苹果
3 苹果和橙子
4 苹果
5 香蕉

我想计算“Apple”在 Fruit 列中的次数,我希望它输出 2,因为第 1 行和第 4 行满足我的条件,即单元格中只有“Apple”并且不区分大小写。我不希望它计算第 3 行,因为该行不仅仅是“Apple”,而且显然第 2 行和第 5 行与字符串“Apple”不匹配,也不应该被计算在内。

标签: pythonpandasstringdataframecsv

解决方案


尝试str.lowervalue_counts

df['Fruit'].str.lower().value_counts()

输出:

apple               2
apples              1
banana              1
apple and orange    1
Name: Fruit, dtype: int64

更新:

要获得特定值,请使用:

df['Fruit'].str.lower().value_counts()['apple']

或者:

>>> df['Fruit'].str.contains('^apple$', case=False).sum()
2
>>> 

推荐阅读