如何无需迭代统计Pandas DataFrame中A后数值大于3的出现次数?
问题描述
给定如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame(['A(3)BC(1)', 'A(2)BC(5)', 'A(1)BC(3)', 'A(2)BC(5)', 'A(4)BC(2)'], columns=['Column1'])
对应表格:
| Column1 | |
|---|---|
| 0 | A(3)BC(1) |
| 1 | A(2)BC(5) |
| 2 | A(1)BC(3) |
| 3 | A(2)BC(5) |
| 4 | A(4)BC(2) |
请问是否无需逐行迭代,即可统计其中A后括号内数值大于3的记录次数?
解决方案
完全可以不用逐行迭代,利用Pandas的向量化字符串操作就能高效完成统计,步骤如下:
- 提取A后括号内的数值:用
str.extract配合正则表达式精准捕获A后面括号里的数字,再转为数值类型:
# 提取A(xxx)中的数字并转为整数 a_values = df['Column1'].str.extract(r'A\((\d+)\)', expand=False).astype(int)
- 统计符合条件的记录数:对提取后的数值做条件筛选,用
sum()统计次数(布尔值会自动转为1/0):
count = (a_values > 3).sum() print(count) # 输出:1
也可以把两步合并成一行代码:
count = df['Column1'].str.extract(r'A\((\d+)\)', expand=False).astype(int).gt(3).sum()
这种方式基于Pandas原生的向量化操作,避免了逐行迭代的低效,处理大规模数据时优势更明显。
内容的提问来源于stack exchange,提问作者Lucas Lazari
相关产品推荐
相关产品推荐

