我有以下数据框:
c1 e c2 d s scr_s scr_c1 scr_d scr_c2 scr_e r1 r2
12 6 13 3 2 11 22 19 5 5 19 scr_s scr_d
13 11 2 6 13 3 9 24 15 9 13 scr_c1 scr_s
我正在尝试获取评估列scr_s、scr_c1、scr_d、scr_c2、scr_e的最大值和最小值的列的名称。因此,具有最高值的列名将存储在r1中,具有最低值的列名将存储在r2中
要计算 r1 和 r2,我使用:
data['r1'] = data[['scr_s','scr_c1','scr_d','scr_c2','scr_e']].idxmax(axis=1)
data['r2'] = data[['scr_s','scr_c1','scr_d','scr_c2','scr_e']].idxmin(axis=1)
问题:当两列具有相同的最大值或最小值时,我必须在“c1”、“e”、“c2”、“d”、“s”列之一中选择具有最大值的列名
在这种特殊情况下,在分析列 r2 时,结果应该不同:
- 对于第一行,列scr_d和scr_c2共享相同的最小值,因此应该评估列'd' 和 'c2' 。在'd 和 c2'列之间,最大值属于'c2',因此r2的预期结果是scr_c2。
我怎么解决这个问题?
预期输出:
c1 e c2 d s scr_s scr_c1 scr_d scr_c2 scr_e r1 r2
12 6 13 3 2 11 22 19 5 5 19 scr_s *scr_c2*
13 11 2 6 13 3 9 24 15 9 13 scr_c1 *scr_c2*