如何用Pandas按每4行一组拼接列值,不足4行也正常合并
解决方案
你当前写的硬编码切片iloc[:-7]仅能适配本次11行的输入场景,不具备通用性,可通过按行索引整数除法生成分组标签的逻辑实现通用的每N行拼接需求,修改后的代码如下:
import pandas as pd # 示例输入 df_in = pd.DataFrame({'Column_IN': ['text 1','text 2','text 3','text 4','text 5','text 6','text 7','text 8','text 9','text 10','text 11']}) # 核心实现逻辑 df_out = df_in.groupby(df_in.index // 4)['Column_IN']\ .agg('&'.join)\ .reset_index(drop=True)\ .to_frame(name='Column_OUT')
逻辑说明
df_in.index // 4:对行索引做向下取整的除法,索引03计算结果为0、47为1、8~10为2,自动生成每4行一组的分组标识,最后不足4行的内容也会自动归到同一组groupby后对Column_IN列执行&字符拼接reset_index(drop=True)清除分组生成的额外索引,to_frame将聚合后的Series转为DataFrame并指定列名为Column_OUT,输出结果完全符合预期。
如果你的原始DataFrame索引不是从0开始的连续整数,可先重置索引再执行分组,适配所有索引场景:
df_out = df_in.reset_index(drop=True)\ .groupby(lambda x: x // 4)['Column_IN']\ .agg('&'.join)\ .reset_index(drop=True)\ .to_frame(name='Column_OUT')
内容的提问来源于stack exchange,提问作者san1
相关产品推荐
相关产品推荐

