Python-根据另一列中的值获取两列的最大值或最小值?
假设您的dataframe包含以下数据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']
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')))