Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python';s max在一个数据帧的列中返回两个同样大的值_Python_Pandas_Dataframe_Max - Fatal编程技术网

使用Python';s max在一个数据帧的列中返回两个同样大的值

使用Python';s max在一个数据帧的列中返回两个同样大的值,python,pandas,dataframe,max,Python,Pandas,Dataframe,Max,我希望找到每行具有最大值的数据帧列,如果有多个同样大的值,则返回这些值所在的所有列名。我想将所有这些值存储在数据框的最后一列中。我一直在引用以下帖子,不确定如何修改它以处理数据帧: 如果我的数据是这样的 Key Column_1 Column_2 Column_3 0 1 2 3 1 1 1 0 2 0 0 0 我的目标是输出如下所示: K

我希望找到每行具有最大值的数据帧列,如果有多个同样大的值,则返回这些值所在的所有列名。我想将所有这些值存储在数据框的最后一列中。我一直在引用以下帖子,不确定如何修改它以处理数据帧:

如果我的数据是这样的

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)返回第一个max,并且知道如果在数据帧中将0更改为Nan,它将正确填充最后一行,只是不确定当存在多个max值时如何执行此操作


非常感谢您的帮助!我是一名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)))

这个很好用,谢谢!我的数据框将同时包含数字列和非数字列。我显然只想要非数值列的最大值。这个脚本能解释这一点吗。我总是可以预先对数据帧进行子集划分,然后重新加入。或者有没有一种方法可以在这里进行子集划分,比如按列索引?添加了
选择\u dtypes
,这样您就可以只抓取数字列了!我得到这个错误:类型错误:数据类型“数值”不理解。当我使用df.dtypes时,我的数字列是float64。我是否应该将脚本中的“numeric”替换为“float64”?它是
number
而不是
numeric
。这应该可以工作
d.notna().dot(d.columns+',')。str.rstrip(',')
应该可以工作
   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