如何使用pandas将同一ID下的多行文本合并为单行
你当前使用sum聚合的问题是:字符串求和仅会直接拼接所有内容,不会自动插入你需要的逗号分隔符。
实现代码(逗号分隔,匹配预期效果)
# as_index=False 保证ID作为普通列输出,而非行索引 result_df = df.groupby('ID', as_index=False)['text'].agg(', '.join)
运行上述代码得到的结果就和你给出的预期输出完全一致。
可选扩展:方括号包裹每个条目
如果你需要每个text条目用方括号包裹后再拼接,可以使用自定义lambda聚合:
result_df = df.groupby('ID', as_index=False)['text'].agg( lambda x: ', '.join(f'[{text}]' for text in x) )
输出效果示例:
| ID | text |
|---|---|
| A | [name;job], [like;interest], [speak;too] |
注意事项
如果你的text列存在空值(NaN),建议提前过滤空值避免join操作报错:
result_df = df.dropna(subset=['text']).groupby('ID', as_index=False)['text'].agg(', '.join)
内容的提问来源于stack exchange,提问作者LearningCode
相关产品推荐
相关产品推荐

