DataFrame.abs()
返回一个包含每个元素绝对值的Series
/DataFrame
。
此函数只适用于所有数值元素。
返回: | abs 包含每个元素绝对值的 |
例子,
1)基本使用
import pandas as pd
# 创建一个包含负数的 DataFrame
df = pd.DataFrame({
'A': [-1, -2, -3],
'B': [4, -5, 6],
'C': [-7, 8, -9]
})
print("原始 DataFrame:")
print(df)
# 计算 DataFrame 的绝对值
df_abs = df.abs()
print("\n绝对值 DataFrame:")
print(df_abs)
2)处理包含 NaN 的 DataFrame
import pandas as pd
import numpy as np
# 创建一个包含 NaN 的 DataFrame
df = pd.DataFrame({
'A': [-1, np.nan, -3],
'B': [4, -5, np.nan],
'C': [-7, 8, -9]
})
print("原始 DataFrame:")
print(df)
# 计算 DataFrame 的绝对值
df_abs = df.abs()
print("\n绝对值 DataFrame:")
print(df_abs)
3)处理带有多种数据类型的 DataFrame
import pandas as pd
# 创建一个包含多种数据类型的 DataFrame
df = pd.DataFrame({
'A': [-1, -2, -3],
'B': [4, -5, 6],
'C': ['a', 'b', 'c']
})
print("原始 DataFrame:")
print(df)
# 计算 DataFrame 的绝对值
df_abs = df[['A', 'B']].abs() # 仅对数值列进行操作
print("\n绝对值 DataFrame (仅数值列):")
print(df_abs)
4)使用示例
import pandas as pd
import numpy as np
# 1. Series 中的绝对数值
s = pd.Series([-1.10, 2, -3.33, 4])
s_abs = s.abs()
print("原始 Series:")
print(s)
print("\nSeries 的绝对值:")
print(s_abs)
# 2. 复数 Series 中的绝对数值
s_complex = pd.Series([1.2 + 1j])
s_complex_abs = s_complex.abs()
print("\n原始复数 Series:")
print(s_complex)
print("\n复数 Series 的绝对值:")
print(s_complex_abs)
# 3. 具有时间增量元素的 Series 中的绝对数值
s_timedelta = pd.Series([pd.Timedelta('1 days')])
s_timedelta_abs = s_timedelta.abs()
print("\n原始时间增量 Series:")
print(s_timedelta)
print("\n时间增量 Series 的绝对值:")
print(s_timedelta_abs)
# 4. 使用 argsort 选择数据最接近某个值的行
df = pd.DataFrame({
'a': [4, 5, 6, 7],
'b': [10, 20, 30, 40],
'c': [100, 50, -30, -50]
})
print("\n原始 DataFrame:")
print(df)
# 使用 argsort 选择 'c' 列中最接近 43 的行
df_sorted = df.loc[(df.c - 43).abs().argsort()]
print("\n根据 'c' 列中最接近 43 的行排序后的 DataFrame:")
print(df_sorted)