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

如何在Pandas DataFrame中添加列总和行并按最大值排序

在Pandas DataFrame中添加总和行并按最大值排序

嘿,我来帮你一步步解决这个问题,同时也会兼顾你提到的文本片段处理~

一、添加各列总和的行

不管你的DataFrame是纯数值型还是包含文本列(比如你提供的abst1),我们都能精准添加总和行:

情况1:纯数值型DataFrame

先看个简单示例,假设我们有这样的DataFrame:

import pandas as pd

data = {
    '销量': [120, 90, 150],
    '利润': [30, 15, 40],
    '库存': [80, 100, 60]
}
df = pd.DataFrame(data)

直接用loc添加总和行就行,记得加上numeric_only=True确保只对数值列求和:

# 添加标记为「总计」的行,计算各列总和
df.loc['总计'] = df.sum(numeric_only=True)

情况2:包含文本列的DataFrame

如果你的DataFrame里有像abst1这样的文本字段(比如存储文章摘要),我们要避免对文本列求和,只针对数值列操作:

# 假设你的DataFrame有文本列'abst1'和数值列'引用量', '下载量'
# 先筛选出所有数值类型的列
numeric_cols = df.select_dtypes(include='number').columns

# 给数值列添加总和,文本列可以标记为「总计」或者留空
df.loc['总计', numeric_cols] = df[numeric_cols].sum()
df.loc['总计', 'abst1'] = '总计行'

二、按每行最大值排序

这里的“按最大值排序”,应该是指根据每行的数值最大值来排序。我们可以先计算每行的最大值,再以此为依据排序:

常规排序(包含总和行)

如果想把总和行也参与排序:

# 计算每行的最大值,临时存为新列
df['行最大值'] = df.select_dtypes(include='number').max(axis=1)

# 按「行最大值」降序排序,排序后删掉临时列
df_sorted = df.sort_values(by='行最大值', ascending=False).drop('行最大值', axis=1)

保留总和行在末尾

如果希望总和行始终在最后,先单独处理非总和行,再合并回去:

# 把总和行单独提出来
total_row = df.loc[['总计']]
# 剩下的行排除总和行
df_rest = df.drop('总计')

# 给非总和行计算最大值并排序
df_rest['行最大值'] = df_rest.select_dtypes(include='number').max(axis=1)
df_rest_sorted = df_rest.sort_values(by='行最大值', ascending=False).drop('行最大值', axis=1)

# 合并排序后的行和总和行,总和行在最后
df_final = pd.concat([df_rest_sorted, total_row])

关于你提供的文本片段

你给出的abst1是一段文章摘要文本,在处理这类文本列时,记得始终用select_dtypes(include='number')或者numeric_only=True来限定数值列的操作,避免对文本执行求和、取最大值这类无效操作导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:56:34