如何用Python统计column A值小于column B的出现频次?
统计Column A值小于Column B值的出现频次(Python实现)
嘿,这个需求其实挺常见的,我给你分享两种最实用的实现方法,覆盖不同的数据存储场景:
方法1:用Pandas处理表格数据(最推荐)
如果你的数据是存在DataFrame里的(比如从CSV/Excel导入的结构化数据),用Pandas来处理简直事半功倍:
import pandas as pd # 先模拟一个示例DataFrame(实际中你可以用pd.read_csv/pd.read_excel导入) df = pd.DataFrame({ 'Column A': [1, 3, 5, 2, 4], 'Column B': [2, 2, 6, 3, 3] }) # 核心代码:生成布尔掩码后直接求和 count = (df['Column A'] < df['Column B']).sum() print(f"Column A小于Column B的出现频次:{count}") # 输出结果是3,对应第1、3、4行满足条件
原理很简单:df['Column A'] < df['Column B']会生成一个布尔类型的Series,每行对应一个True/False,而Python里True等价于1、False等价于0,用sum()就能直接统计满足条件的行数。
方法2:纯Python处理列表数据
如果你的Column A和Column B只是普通的Python列表,不用依赖Pandas也能轻松搞定:
column_a = [1, 3, 5, 2, 4] column_b = [2, 2, 6, 3, 3] # 用生成器表达式遍历配对元素,统计满足条件的数量 count = sum(1 for a, b in zip(column_a, column_b) if a < b) print(f"Column A小于Column B的出现频次:{count}")
这里用zip()把两个列表的元素一一配对,然后通过生成器表达式筛选出a < b的情况,每满足一次就加1,最后用sum()汇总总数,简洁又高效。
额外小彩蛋:统计满足条件的比例
如果你还想知道满足A < B的比例,直接用统计出的频次除以总元素数就行:
# Pandas版本直接用mean()更方便 ratio = (df['Column A'] < df['Column B']).mean() # 纯Python版本 ratio = count / len(column_a) print(f"满足A<B的比例:{ratio:.2%}")
内容的提问来源于stack exchange,提问作者user12625679
相关产品推荐
相关产品推荐

