Pandas如何根据列的求和结果筛选满足指定条件的列?
实现方法优化
你当前的实现逻辑是可行的,但存在冗余步骤,可以简化为一行代码完成,运行效率和可读性都会更好:
# 若按你描述的需求,筛选列和**大于1**的列 df = df.loc[:, df.sum(axis=0) > 1] # 若你实际需要的是代码里写的列和大于等于1的列,调整判断条件即可 df = df.loc[:, df.sum(axis=0) >= 1]
原理解释
df.sum(axis=0)会直接返回一个以列名为索引、值为对应列求和结果的Series,不需要额外转成DataFrame存储- 对该Series直接做条件判断会得到等长的布尔Series,作为
loc的列索引参数,就可以直接筛选出满足条件的列 - 省略了中间创建临时DataFrame、二次索引取符合条件的列名这两个冗余步骤,数据量越大性能优势越明显
内容的提问来源于stack exchange,提问作者Aaditya Ura
相关产品推荐
相关产品推荐

