Python Pandas如何实现带多条件的唯一值计数(类似COUNTIFS功能)
解决方案
以下分别提供Python Pandas和Excel两种场景的实现方法:
Python Pandas 实现
核心逻辑:先过滤满足B、C条件的行,再按A列分组统计每个标识符的符合条目数,最后筛选条目数等于2的标识符并计数。
import pandas as pd # 示例数据构造,实际使用时替换为pd.read_csv/读入自己的数据集即可 df = pd.DataFrame({ 'Column A': [1001,1001,1001,1001,1002,1002,1002,1002,1003,1003,1003,1003], 'Column B': [4,3,6,4,7,7,2,3,0,3,3,4], 'Column C': [1,0,1,1,0,1,1,1,1,0,1,1] }) # 1. 过滤B在2-4之间且C等于1的行 filtered_df = df[(df['Column B'].between(2,4)) & (df['Column C'] == 1)] # 2. 按A列分组,统计每个A值对应的符合条件的行数 count_per_a = filtered_df.groupby('Column A').size() # 3. 筛选行数恰好为2的A值,统计总数量 result = count_per_a[count_per_a == 2].count() print(result)
Excel 实现
无需写代码的操作步骤:
- 新增辅助列D,第一行数据的单元格输入公式
=AND(B2>=2,B2<=4,C2=1),下拉填充整列,返回TRUE代表该行符合基础条件 - 插入数据透视表,行区域拖拽放入「Column A」字段,值区域拖拽放入「辅助列D」字段,值汇总方式设置为计数
- 对透视表的计数字段做值筛选,仅保留计数等于2的项,透视表剩余的行数量就是最终结果
内容的提问来源于stack exchange,提问作者OldSport
相关产品推荐
相关产品推荐

