如何使用pandas统计并展示仅包含小写字符的行的数量
Pandas 统计数据表内仅含小写字符行的实现方案
前置准备
首先导入pandas库,可先构造测试数据验证逻辑:
import pandas as pd # 构造测试数据表 df = pd.DataFrame({ 'col1': ['apple', 'Banana', 'cherry123', '1234', 'orange', ''], 'col2': ['cat', 'dog', 'Elephant', 'fish', 'tiger', 'rabbit'] })
场景1:统计某指定字符串列中仅含小写字符的行数
直接使用pandas字符串方法str.islower()实现判断:
# 统计col1列中仅含小写字符的行数 lower_count = df['col1'].str.islower().fillna(False).sum() print(lower_count)
逻辑说明:
str.islower():判断字符串是否全部由小写字符构成,且至少包含一个可区分大小写的字符,非字符串类型、空字符串会返回NaNfillna(False):将非字符串、空字符串的判断结果替换为False,不计入统计,如有需要可自行调整规则sum():对布尔序列求和,True按1计算,False按0计算,最终得到符合条件的总行数
场景2:统计整行所有字符串列均为小写字符的行数
如果要求整行所有字符串类型的字段都满足全小写规则,实现逻辑如下:
# 第一步:筛选出所有字符串类型的列 str_cols = df.select_dtypes(include='object') # 第二步:逐行判断所有字符串列是否都满足全小写要求 all_lower_mask = str_cols.apply(lambda col: col.str.islower().fillna(False)).all(axis=1) # 第三步:统计符合条件的总行数 all_lower_count = all_lower_mask.sum() # 如需查看符合条件的所有行,直接按掩码筛选即可 print(df[all_lower_mask])
逻辑说明:
select_dtypes(include='object'):自动筛选表内所有字符串类型的列,排除数值、日期等不需要判断的列all(axis=1):按行判断,只有该行所有列的判断结果都为True时,最终结果才为True
常见逻辑调整
- 如需将空字符串纳入符合条件的范围,可修改判断规则为
col.str.islower().fillna(False) | (col == '') - 如需忽略数字的影响,可先对字符串做过滤:
col.str.replace('\d', '', regex=True).str.islower().fillna(False)
内容的提问来源于stack exchange,提问作者Rushad Khan
相关产品推荐
相关产品推荐

