关于Pandas版本: 本文基于 pandas2.1.2 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。
Pandas API参考所有内容目录
本节目录
- Pandas.DataFrame.abs()
- 语法:
- 返回值:
- 计算公式
- 相关方法:
- 示例:
- 例1:求"Age"列所有数值的绝对值,如果有缺失值,则对应位置返回NaN。
- 例1-1、构建演示数据,并观察数据内容
- 例1-2、求"Age"列所有数值的绝对值,如果有缺失值,则对应位置返回NaN
- 例2:如果传入 `DataFrame.abs` 的数据不全是数值类型,会报错 `TypeError`
- 例3:复数绝对值的计算
Pandas.DataFrame.abs()
Pandas.DataFrame.abs
方法用于返回每个元素的绝对数值。
- 求绝对值的
DataFrame
允许出现缺失值(NaN
)。但缺失值(NaN
)的绝对值依然是 `NAN 例1 - 求绝对值的
DataFrame
所有元素必须都必须全都是数值类型(整数int
,浮点数float
,布尔值bool
)。否则将报错TypeError
。例2
语法:
DataFrame.abs()
返回值:
-
abs
返回包含每个元素的绝对值的
Series
或DataFrame
。
计算公式
- 常规数值:
- ∣ x ∣ |x| ∣x∣
- 复数(
complex
): 例3- 复数的表现形式: z = a + b i z=a+bi z=a+bi
- 复数的绝对值计算公式: ∣ z ∣ = a 2 + b 2 |z| = \sqrt{a^2 + b^2} ∣z∣=a2+b2
- 布尔值:
- 布尔值没有绝对值,如果被使用将报错
TypeError
。
- 布尔值没有绝对值,如果被使用将报错
相关方法:
➡️ 相关方法
Series.abs
绝对值
示例:
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。
例1:求"Age"列所有数值的绝对值,如果有缺失值,则对应位置返回NaN。
例1-1、构建演示数据,并观察数据内容
import pandas as pd
import numpy as np
df = pd.DataFrame({"Person":["John", "Myla", "Lewis", "John", "Myla"],
"Age": [-24., np.nan, -21., 33, 26],
"Single": [False, True, True, True, False]})
df
Person | Age | Single | |
---|---|---|---|
0 | John | -24.0 | False |
1 | Myla | NaN | True |
2 | Lewis | -21.0 | True |
3 | John | 33.0 | True |
4 | Myla | 26.0 | False |
例1-2、求"Age"列所有数值的绝对值,如果有缺失值,则对应位置返回NaN
df['Age'].abs()
0 24.0
1 NaN
2 21.0
3 33.0
4 26.0
Name: Age, dtype: float64
例2:如果传入 DataFrame.abs
的数据不全是数值类型,会报错 TypeError
df.abs()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File D:\miniconda3\envs\python3.12\Lib\site-packages\pandas\core\internals\blocks.py:366, in Block.apply(self, func, **kwargs)
360 @final
361 def apply(self, func, **kwargs) -> list[Block]:
362 """
363 apply the function to my values; return a block if we are not
364 one
365 """
--> 366 result = func(self.values, **kwargs)
368 result = maybe_coerce_values(result)
369 return self._split_op_result(result)
TypeError: bad operand type for abs(): 'str'
例3:复数绝对值的计算
import pandas as pd
s = pd.Series([1.2 + 1j, 2.3+0.5j])
s.abs()
运行结果:
0 1.56205
1 2.35372
dtype: float64