You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Pandas DataFrame指定数值列的绝对值之和?

计算Pandas DataFrame指定数值列的绝对值之和

问题场景

现有包含字符串列和数值列的DataFrame,需要对指定数值列计算所有元素的绝对值之和,且列列表col_list不能包含字符串类型列。修改后的DataFrame如下:

studentname  mathantics  science  english
r1         Ram          80       85       90
r2         Sam          90       95      -85
r3       Scott         -85       80       80
r4         Ann          70       90       70
r5        John          95      -75       95
r6        Bobo         100      100      100

预期输出各数值列的绝对值总和:

mathantics    520
science       525
english       520

解决方案

1. 手动指定数值列计算

先定义仅包含数值列的col_list,对目标列先取绝对值再按列求和:

import pandas as pd

# 构造目标DataFrame
studentdetails = {
    "studentname": ["Ram", "Sam", "Scott", "Ann", "John", "Bobo"],
    "mathantics": [80, 90, -85, 70, 95, 100],
    "science": [85, 95, 80, 90, -75, 100],
    "english": [90, -85, 80, 70, 95, 100]
}
index_labels = ['r1', 'r2', 'r3', 'r4', 'r5', 'r6']
df = pd.DataFrame(studentdetails, index=index_labels)

# 指定数值列列表
col_list = ['mathantics', 'science', 'english']
# 先取绝对值,再按列求和
abs_column_sum = df[col_list].abs().sum()
print(abs_column_sum)

2. 自动筛选数值列(无需手动列名)

如果DataFrame数值列较多,可通过select_dtypes自动筛选数值类型列,再计算绝对值之和:

# 自动筛选整数/浮点数类型列,计算绝对值总和
abs_column_sum = df.select_dtypes(include=['int64', 'float64']).abs().sum()
print(abs_column_sum)

关键说明

  • 错误误区:若写成df[col_list].sum().abs(),是先对列求和再取绝对值,不符合需求;正确顺序是先对每个元素取绝对值,再按列求和,即df[col_list].abs().sum()。
  • 注意col_list必须仅包含数值列,避免字符串列参与计算报错。

内容的提问来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:20:25