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

如何在Pandas中仅对指定索引范围的行执行Groupby合并?

解决方案

假设你的示例DataFrame如下(模拟索引2~3存在重复行的情况):

import pandas as pd

df = pd.DataFrame({
    'column1': ['A', 'B', 'C', 'C', 'D'],
    'column2': ['x', 'y', 'm', 'n', 'z']
}, index=[0, 1, 2, 2, 3])

可以通过拆分-处理-合并的步骤实现需求:

  1. 拆分DataFrame,分离出需要处理的索引范围(2~3)和其余行
# 筛选索引属于2、3的行作为待处理部分,剩下的保留原样
mask = df.index.isin([2, 3])
df_original = df[~mask].copy()
df_target = df[mask].copy()
  1. 对待处理部分按索引分组,合并column2为字符串
    如果同一索引下其他列(如column1)值一致,直接聚合即可:
# 按索引分组,合并column2为字符串,保留其他列的首个值
df_processed = df_target.groupby(df_target.index).agg({
    'column1': 'first',  # 若同一索引下column1值相同,用first/last均可
    'column2': ' '.join  # 按空格合并,可替换为其他分隔符如','
}).reset_index()

如果同一索引下其他列存在不同值,可根据需求调整聚合方式(比如用','.join合并,或取众数等)。

  1. 合并两部分数据,恢复原索引顺序
# 合并后按索引排序,重置索引为原索引
final_df = pd.concat([df_original, df_processed]).sort_values(by='index').set_index('index')

执行后,final_df的结果为:

column1 column2
index
0            A       x
1            B       y
2            C     m n
3            D       z

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:05:23