如何在Pandas DataFrame多列并行计算符合条件的行数?
解决方法
首先,Pandas本身的向量化操作已经是处理这类列级统计最高效的方式,完全不需要额外写并行逻辑,100列的计算瞬间就能完成。具体步骤如下:
第一步:筛选出你关注的S1到S100列
如果这些列的名称是连续排列的,可以直接用列切片:target_cols = df.loc[:, 'S1':'S100']如果列不是连续的,用正则匹配筛选更稳妥:
target_cols = df.filter(regex='^S\d+$') # 匹配以S开头、后面跟数字的列第二步:统计每列中满足
值 >= cutoff的行数
直接对筛选后的列应用条件判断,再求和(布尔值True等价于1,False等价于0,求和就是符合条件的行数):cutoff = 某个数值 num_of_rows_array = (target_cols >= cutoff).sum().values执行后
num_of_rows_array就是一个NumPy数组,按顺序对应S1到S100列的统计结果。
关于“并行”的补充
其实Pandas的向量化操作本身就是在底层做了优化,比手动写循环或多线程并行效率更高。如果你的DataFrame体量特别大,非要用并行框架的话,可以试试Dask来分块处理,但对于100列的常规场景,上面的方法完全足够。
内容的提问来源于stack exchange,提问作者burcak
相关产品推荐
相关产品推荐

