You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas 1.1.5 如何提取所有行数值均大于0的列

实现方案

核心思路

对数据框的每一列逐列判断:如果该列所有行的数值都严格大于0,则保留该列,否则剔除。

代码实现

首先导入pandas并构造示例数据框(如果已经有df1可以跳过构造步骤):

import pandas as pd

# 构造示例数据框,实际使用时替换为你自己的df1即可
df1 = pd.DataFrame({
    'Revenue': [0, 500, 200],
    'Profit': [300, 900, 100],
    'Sales': [1, 3, 4]
})

如果你的数据框存在非数值列,可以先加一行代码只保留数值列,避免后续判断报错:

# 可选步骤
df1 = df1.select_dtypes(include='number')

核心筛选代码:

# 筛选所有行均大于0的列
result_df = df1.loc[:, df1.gt(0).all(axis=0)]

代码说明

  • df1.gt(0):将数据框中每个元素与0比较,大于0返回True,否则返回False,得到和原数据框结构完全一致的布尔型数据框
  • .all(axis=0):axis=0代表按列做聚合判断,只有该列所有值都为True时才返回True,最终得到一个索引为列名、值为布尔类型的序列
  • df1.loc[:, 布尔序列]:保留所有行,仅保留布尔序列中值为True对应的列

该写法完全兼容你使用的pandas 1.1.5版本,运行后得到的result_df就是要求的输出结果。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:03