在数据帧中求平方值时保留符号

2024-09-24 22:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过这个:

>>> (-10) ** 2
100
>>> -10 ** 2
-100

简而言之,我试图将负值平方的输出设为负值。
所以我尝试了以上简单的表达方式。
然后我在熊猫数据帧上尝试了同样的公式,但是我得到了所有的正值。你知道吗

>>> listi = [-10,-2,2,3,4,5,-100,-3,4]
>>> import pandas as pd
>>> df = pd.DataFrame(listi)
>>> df
     0
0  -10
1   -2
2    2
3    3
4    4
5    5
6 -100
7   -3
8    4
>>> df**2
       0
0    100
1      4
2      4
3      9
4     16
5     25
6  10000
7      9
8     16

我想知道为什么会这样?我怎样才能保持负值的平方为负值呢?你知道吗


Tags: 数据importdataframepandasdfas公式pd
3条回答

熊猫会把它当作(-10) ** 2,所以你必须先自己检测它是不是阴性。你知道吗

在这里使用df.where,如果值是负数,则对该数据使用-1。你知道吗

df * df.where(df>0, -df)

输出:

    0
0   -100
1   -4
2   4
3   9
4   16
5   25
6   -10000
7   -9
8   16

原来的例子-10没有保留值的符号,它只是使10**2的结果为负。那是因为^{} has higher precedence than ^{}。你知道吗

您可以使用

np.sign(df) * df**2

对于-1的负值,可以按^{}的值进行多个:

print (df**2 * np.sign(df))
       0
0   -100
1     -4
2      4
3      9
4     16
5     25
6 -10000
7     -9
8     16

相关问题 更多 >