我有一个df看起来像这样:
a b c
124 -3.09 -0.38 2.34
2359 4.81 0.51 -1.53
56555 -4.34 -0.64 2.31
96786 -3.33 -3.34 -7.62
字符串
我想计算一个新列中每行的绝对最大值**,该列将负数保留为负数。**我得到的最接近的是:
df['new_column'] = df.abs().max(axis = 1)
new_column
3.09
4.81
4.34
7.62
型
但我需要新列保持负号-即。看起来像这样:
new_column
-3.09
4.81
-4.34
-7.62
型
我已经尝试过使用abs().idxmax()做了一些事情,我想知道是否需要找到绝对max值的位置,然后在新列中返回该位置的值-只是不确定该怎么做。有什么想法?
3条答案
按热度按时间2izufjch1#
一年多过去了,但这个问题有一个更快的解决方案。
从您的数据集:
字符串
我们可以这样使用
argmax
:型
输出量:
型
gijlo24d2#
下面是一种使用两个步骤的方法:首先,找出绝对最大值。然后,使用
eq
查看绝对最大值是否等于 Dataframe 中的任何值,并将输出用作-1
的幂,以获得符号:字符串
另一个选项是使用
mask
来选择值:型
输出量:
型
t3psigkw3#
我喜欢你最初想到的想法,保持主题:
字符串
而不是:
型
让我们将其更改为返回列而不是实际值:
型
从那里我们可以通过枚举来迭代它,并将其设置为新列:
型
结果:
型