将一列添加到收件箱中,每个项的最小值仅来自字典对应的列.如果所选列中的值大于列"Col 7"中的值,在计算最小值时如何添加条件?

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) 

结果应该是:

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]
            })

推荐答案

与Marcin的答案类似,您可以在if col in r之后再加上and r[col] > r['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)

Python相关问答推荐

在应用循环中间保存pandas DataFrame

Pandas :多索引组

如何用symy更新分段函数

在Pandas框架中截短至固定数量的列

使用SciPy进行曲线匹配未能给出正确的匹配

比较两个数据帧并并排附加结果(获取性能警告)

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

我们可以为Flask模型中的id字段主键设置默认uuid吗

如何更改分组条形图中条形图的 colored颜色 ?

在Python中动态计算范围

为一个组的每个子组绘制,

Gekko中基于时间的间隔约束

如何在Great Table中处理inf和nans

将一个双框爆炸到另一个双框的范围内

处理Gekko的非最优解

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?

一个telegram 机器人应该发送一个测验如何做?""

提取数组每行的非零元素

我怎么才能用拉夫分拣呢?

对数据帧进行分组,并按组间等概率抽样n行