使用 Python 的最大值到 return 跨数据框列的两个同样大的值

Using Python's max to return two equally large values across columns of a data frame

我想找到数据框的每行最大值的列,如果有多个同样大的值,那么 return 这些值所在的所有列名。我想将所有这些值存储在数据框的最后一列中。我一直在引用以下 post,但不确定如何修改它以处理数据帧:

Using Python's max to return two equally large values

如果我的数据是这样的

Key    Column_1  Column_2  Column_3
0          1        2         3
1          1        1         0
2          0        0         0

我的目标是输出如下所示:

Key    Column_1  Column_2  Column_3  Column_4
0          1        2         3      Column_3
1          1        1         0      Column_1,Column_2
2          0        0         0      NA

我知道如何使用 idxmax(axis=1,skipna = True) 到 return 第一个最大值并且知道如果我在数据框中将 0 更改为 Nan 它会正确填充最后一行,只是当有多个最大值时不确定如何执行此操作。

非常感谢任何帮助!我是一名 R 程序员,这是我第一次 Python。

同时使用 dot,并将其与 mask 组合:

d = df.set_index('Key').select_dtypes('number')
v = d.eq(d.max(axis=1), axis=0).dot(d.columns + ',').str.rstrip(',')
df['Column_4'] = v.mask(d.eq(0).all(axis=1)))
   Key  Column_1  Column_2  Column_3           Column_4
0    0         1         2         3           Column_3
1    1         1         1         0  Column_1,Column_2
2    2         0         0         0                NaN