Python-根据另一列中的值获取两列的最大值或最小值?

Python-根据另一列中的值获取两列的最大值或最小值?,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,假设您的dataframe包含以下数据 key score1 score2 count 1 0.87 0.13 0 2 0.67 0.33 1 3 0.46 0.54 1 4 0.28 0.72 0 5 0.41 0.59 1 如果count==0,找到min[score1,score2]的最短方法是什么?如果count>0,找到max[score1,score2]的最短方法是什么 目前的解决办法是 data['mini']

假设您的dataframe包含以下数据

key score1 score2 count
1    0.87   0.13   0
2    0.67   0.33   1
3    0.46   0.54   1
4    0.28   0.72   0
5    0.41   0.59   1
如果count==0,找到min[score1,score2]的最短方法是什么?如果count>0,找到max[score1,score2]的最短方法是什么

目前的解决办法是

data['mini']=data[[score1, score2]].min(axis=1)
data['maxi']=data[[score1, score2]].max(axis=1)
data['fin_score']= data['mini'].where(data['count']==0, data['maxi'])
有没有办法让它变得更清晰(在1/2命令中),比如在excel中,如下所示,然后在所有行上拖动公式

=IF(count>0,MAX(B2:C2),MIN(B2:C2))
结果是这样的

key score1 score2 count fin_score
1    0.87   0.13   0       0.13
2    0.67   0.33   1       0.67
3    0.46   0.54   1       0.54
4    0.28   0.72   0       0.28
5    0.41   0.59   1       0.59

Excel的IF函数对于数组的等效值为:


为什么需要在行中存储额外的值

data['fin_score'] = (max if data['count'] else min)(map(lambda k: data['score' + k], ('1', '2')))
data['fin_score'] = (max if data['count'] else min)(map(lambda k: data['score' + k], ('1', '2')))