pandas dataframe groupby操作如何用换行符拼接字符串列
解决方法
你可以通过给agg()方法传入字段规则字典,为不同列指定不同的拼接逻辑,具体代码如下:
import pandas as pd # 配置pandas显示规则,确保打印时能正常展示换行 pd.set_option('display.max_colwidth', None) pd.set_option('display.expand_frame_repr', False) # 按Category分组,不同列用不同分隔符拼接 df_new = df.groupby(['Category'], as_index=False).agg({ # Name列用换行符拼接 'Name': '\n'.join, # 其余列沿用空格拼接 'Last': ' '.join, 'Loc': ' '.join })
如果你的表列数较多,不想逐个手动写规则,可以用字典推导式批量生成聚合规则:
# 排除分组键外的所有需要聚合的列 agg_columns = [col for col in df.columns if col != 'Category'] # 生成聚合规则:只有Name列用换行,其余用空格 agg_rule = {col: '\n'.join if col == 'Name' else ' '.join for col in agg_columns} df_new = df.groupby('Category', as_index=False).agg(agg_rule)
注意:如果你之前测试时看到
\n没有生效变为换行,大概率是pandas默认的显示限制把换行转义或者截断了,加上前面的显示配置即可在控制台/Notebook中看到和预期一致的换行效果。如果后续要导出到Excel,只要开启单元格的「自动换行」格式就能正常展示换行,导出CSV也会默认保留换行符,无需额外处理。
内容的提问来源于stack exchange,提问作者RSM
相关产品推荐
相关产品推荐

