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

如何简洁地为DataFrame中各组填充小计行数值

简洁实现DataFrame小计行填充

示例输入数据

先构造符合需求的示例DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Group': ['A', 'A', 'Total A', 'B', 'B', 'B', 'Total B'],
    'Value': [1, 2, np.nan, 3, np.nan, 5, np.nan]
})

简洁解决方案

利用pandas的分组和向量化操作,无需循环即可完成填充:

# 提取对应组名(从"Total X"中剥离前缀)
df['Group_Name'] = df['Group'].str.replace('Total ', '', regex=False)

# 按组计算求和(自动忽略NaN),并映射到对应行
df['Value'] = df['Value'].mask(
    df['Group'].str.startswith('Total '),
    df.groupby('Group_Name')['Value'].transform('sum')
)

# 清理临时列
df = df.drop('Group_Name', axis=1)

结果说明

运行后得到的目标DataFrame:

Group  Value
0        A    1.0
1        A    2.0
2  Total A    3.0
3        B    3.0
4        B    NaN
5        B    5.0
6  Total B    8.0

关键细节

  • str.replace精准提取组名,保证和前面的分组对应
  • groupby.transform('sum')自动忽略NaN值,计算每组的有效求和
  • mask方法仅对"Total X"行进行值替换,不改动其他行的原始数据
  • 全程使用pandas向量化操作,比循环实现更高效、简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:30:51