pandas.DataFrame.abs#

DataFrame.abs()[源代码]#

返回一个包含每个元素绝对数值的 Series/DataFrame。

此函数仅适用于所有元素均为数字的情况。

返回:
abs

包含每个元素绝对值的Series/DataFrame。

参见

numpy.absolute

计算绝对值元素逐个地。

备注

对于 complex 输入,1.2 + 1j,绝对值是 \(\sqrt{ a^2 + b^2 }\)

例子

Series 中的绝对数值。

>>> s = pd.Series([-1.10, 2, -3.33, 4])
>>> s.abs()
0    1.10
1    2.00
2    3.33
3    4.00
dtype: float64

带有复数的序列中的绝对数值。

>>> s = pd.Series([1.2 + 1j])
>>> s.abs()
0    1.56205
dtype: float64

带有 Timedelta 元素的 Series 中的绝对数值。

>>> s = pd.Series([pd.Timedelta("1 days")])
>>> s.abs()
0   1 days
dtype: timedelta64[ns]

使用 argsort 选择最接近某个值的行(来自 StackOverflow)。

>>> df = pd.DataFrame(
...     {"a": [4, 5, 6, 7], "b": [10, 20, 30, 40], "c": [100, 50, -30, -50]}
... )
>>> df
     a    b    c
0    4   10  100
1    5   20   50
2    6   30  -30
3    7   40  -50
>>> df.loc[(df.c - 43).abs().argsort()]
     a    b    c
1    5   20   50
0    4   10  100
2    6   30  -30
3    7   40  -50