当两列在一行中具有最大值时查找最后一列名称 python

finding last column name when two columns have max value in one row python

这是我的数据框

  x y z

0 1 0 0

1 1 0 1

2 0 0 1

3 0 1 1

4 1 1 0

当我使用 df.idxmax(axis=1)

我得到的输出是

x

x

z

y

x                        

我想要的输出是

x

z

z

z

y

当两行都包含最大值时,请帮我找到最大行的列名

为什么不使用映射或应用或转换并调用函数来生成每行所需的结果?

Df[“result”]=Df.map(mydictionary)

Mydictionary returns x or y or z

取垂直对称然后idxmax怎么样,即

df.iloc[:, ::-1].idxmax(axis=1)
0    x
1    z
2    z
3    z
4    y

所以 df.iloc[:, ::-1] 部分是

   z  y  x
0  0  0  1
1  1  0  1
2  1  0  0
3  1  1  0
4  0  1  1

现在从 z 到 x



另一种重建索引的方式可能更清楚地表明意图:

df.reindex(columns=df.columns[::-1]).idxmax(axis=1)
0    x
1    z
2    z
3    z
4    y

同上。