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
相关产品推荐
相关产品推荐

