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

Pandas:筛选求和大于0的列中求和最小的列名

筛选求和>0的列并找到和最小的列名

核心解决方案

先构造示例数据,再通过分步操作得到目标列名:

import pandas as pd

# 构造示例DataFrame
data = {
    'date': ['2020-1-30', '2020-2-1', '2020-2-2'],
    'col1': [0, 0, 0],
    'col2': [1, 2, 2],
    'col3': [2, 3, 2],
    'col4': [3, 4, 5]
}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])  # 可选,规范日期格式

# 分步实现
# 1. 计算排除日期列后的各列总和
col_sums = df.drop('date', axis=1).sum()
# 2. 过滤掉总和≤0的列
filtered_sums = col_sums[col_sums > 0]
# 3. 获取总和最小的列名
min_col = filtered_sums.idxmin()
print(min_col)  # 输出: col2

简洁写法

可以把步骤合并为一行代码:

min_col = df.drop('date', axis=1).sum()[lambda x: x > 0].idxmin()

边界情况处理

如果所有数值列的总和都≤0,需避免报错:

filtered_sums = df.drop('date', axis=1).sum()[lambda x: x > 0]
if not filtered_sums.empty:
    min_col = filtered_sums.idxmin()
else:
    min_col = None  # 或根据业务需求返回提示信息

代码说明

  • df.drop('date', axis=1):移除日期列,仅保留数值型列
  • .sum():按列计算总和
  • [lambda x: x > 0]:筛选出总和大于0的列
  • .idxmin():返回总和最小的列的名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:10:54