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

如何按指定索引区间对DataFrame单元格求和合并?

实现方案:用Pandas GroupBy按区间分组求和

你提到的需求可以通过Pandas的GroupBy功能轻松实现,核心思路是给行和列分别创建分组标签,再按标签分组求和。以下是具体步骤:

1. 构造示例DataFrame

先还原你给出的原始数据:

import pandas as pd

df = pd.DataFrame([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
])

2. 自定义区间分组

针对你指定的[0,2]、[2,4]区间,有两种灵活的实现方式:

方式一:按步长自动分组(适合等长区间)

如果行/列是按固定步长划分,直接用整除运算生成分组标签:

# 行分组:每2行归为一组
row_groups = df.index // 2
# 列分组:每2列归为一组
col_groups = df.columns // 2

# 分组求和并重新整理成二维表格
result = df.groupby([row_groups, col_groups]).sum().unstack()

方式二:自定义任意区间(适配非等长场景)

如果需要指定不规则区间范围,用pd.cut生成分组标签:

# 定义行和列的区间边界(左闭右开,include_lowest=True确保起始点被包含)
row_bins = [0, 2, 4]
col_bins = [0, 2, 4]

row_groups = pd.cut(df.index, bins=row_bins, labels=False, include_lowest=True)
col_groups = pd.cut(df.columns, bins=col_bins, labels=False, include_lowest=True)

# 分组求和
result = df.groupby([row_groups, col_groups]).sum().unstack()

3. 输出结果

运行上述代码后,result即为你需要的合并求和结果:

0   1
0  14  22
1  46  54

这种方法比rolling更贴合需求——rolling是滑动窗口求和,而你需要的是固定区间的聚合合并,GroupBy完全匹配这个场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:48:25