Pandas按指定列分组后对不同列使用不同分隔符合并列值的实现方法
你原有代码两次单独对单列进行分组聚合,后一次计算结果会直接覆盖前一次的new_df变量,因此只能得到一列的拼接结果。可以通过groupby搭配agg()方法,同时为不同列指定不同的聚合规则实现需求:
cols = ['col1', 'col2'] # pandas 0.25及以上版本支持的命名聚合写法,可直接指定输出列名 new_df = df.groupby(cols, as_index=False).agg( col3 = ('col3', lambda x: '; '.join(x)), col4 = ('col4', lambda x: '\n'.join(x)) )
如果使用的是旧版本pandas,也可以用字典传参的写法实现:
cols = ['col1', 'col2'] new_df = df.groupby(cols).agg({ 'col3': lambda x: '; '.join(x), 'col4': lambda x: '\n'.join(x) }).reset_index()
代码说明:
as_index=False参数可以让分组键保持为普通列,无需后续额外调用reset_index()还原索引agg()方法支持为不同列分别自定义聚合逻辑,两列的拼接操作会在一次分组计算中完成,不需要多次分组覆盖结果
内容的提问来源于stack exchange,提问作者user14380579
相关产品推荐
相关产品推荐

