使用 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
我想找到数据框的每行最大值的列,如果有多个同样大的值,那么 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