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

如何在Pandas中按条件(大于Col7)计算DataFrame指定列的最小值

问题与解决方案

需求

已实现基于字典映射列,为DataFrame添加每个Item对应列的最小值列。现需补充计算条件:仅选取所选列中大于'Col7'列的值来计算最小值。

原代码

import pandas as pd
my_dict={'Item1':['Col1','Col3','Col6'],
'Item2':['Col2','Col4','Col6','Col8']
        }
df=pd.DataFrame({
            'Col0':['Item1','Item2'],
            'Col1':[20,25],
            'Col2':[89,15],
            'Col3':[36,30],
            'Col4':[40,108],
            'Col5':[55,2],
            'Col6':[35,38],
            'Col7':[30,20]
            })

df['min']=df.apply(lambda r:r[[col for col in my_dict.get(r['Col0'], []) if col in r]].min(),axis=1) 

期望结果

# 输出的DataFrame应如下
df=pd.DataFrame({
            'Col0':['Item1','Item2'],
            'Col1':[20,25],
            'Col2':[89,15],
            'Col3':[36,30],
            'Col4':[40,108],
            'Col5':[55,2],
            'Col6':[35,38],
            'Col7':[30,20],
            'min':[35,38]
            })

修改后的代码

只需在原代码的列筛选逻辑中,增加列值大于当前行Col7值的判断条件即可:

import pandas as pd
my_dict={'Item1':['Col1','Col3','Col6'],
'Item2':['Col2','Col4','Col6','Col8']
        }
df=pd.DataFrame({
            'Col0':['Item1','Item2'],
            'Col1':[20,25],
            'Col2':[89,15],
            'Col3':[36,30],
            'Col4':[40,108],
            'Col5':[55,2],
            'Col6':[35,38],
            'Col7':[30,20]
            })

# 新增筛选条件:仅保留大于Col7的列值
df['min'] = df.apply(lambda r: 
    r[[col for col in my_dict.get(r['Col0'], []) if col in r and r[col] > r['Col7']]].min(),
    axis=1
)

print(df)

说明

  • 对每个行,先根据Col0的值从字典中获取对应列列表
  • 筛选出存在于当前DataFrame中,且列值大于该行Col7值的列
  • 计算这些列的最小值,赋值给min列

内容的提问来源于stack exchange,提问作者Евгения

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:30:17