Pandas高效统计每行中大于指定列值的元素数量
解决方法:用Pandas矢量化操作高效统计
没问题,这事儿用Pandas的矢量化操作就能完美解决,完全不需要循环或者lambda,速度拉满,特别适合大数据量的场景。
步骤1:构造原始DataFrame
先把你的数据转换成Pandas DataFrame:
import pandas as pd df = pd.DataFrame({ 'X': [1, 5, 6], 'a': [1, 4, 7], 'b': [0, 7, 8], 'c': [2, 3, 9] })
步骤2:矢量化统计大于X的元素数
核心代码就一行,直接生成Count列:
df['Count'] = (df.drop('X', axis=1) > df['X']).sum(axis=1)
代码解释
拆解一下这行代码的逻辑:
df.drop('X', axis=1):先移除X列,得到只包含a、b、c的子DataFrame> df['X']:利用Pandas的广播机制,把X列的值自动匹配到每行的对应位置,和a、b、c的每个元素做比较,生成一个布尔值DataFrame(True表示该位置元素大于对应行的X值).sum(axis=1):按行求和,布尔值里True会被视为1,False视为0,求和结果就是每行中大于X的元素数量
最终输出
执行完代码后,你的DataFrame就变成了:
X a b c Count 0 1 1 0 2 2 1 5 4 7 3 1 2 6 7 8 9 3
这种方法完全基于Pandas/NumPy的底层矢量化实现,没有任何循环操作,处理几十万甚至上百万行数据都毫无压力,完全符合你的需求。
内容的提问来源于stack exchange,提问作者sandy
相关产品推荐
相关产品推荐

