如何在Pandas中按指定多列条件拼接某列值并实现聚合计算
实现方案
用Pandas的groupby配合聚合方法即可直接实现需求,具体操作如下:
- 先导入Pandas库,若你的DataFrame中text列存在空值,可先将空值替换为空字符串避免拼接报错
- 按
id、id_2、id_3三列分组,分别指定text列和integers列的聚合规则即可
完整代码示例
import pandas as pd # 构造和你需求匹配的测试数据 df = pd.DataFrame({ 'id': [0,0,0,1,1], 'id_2': [1,1,1,2,2], 'id_3': [2,2,2,3,3], 'text': ['lorem', 'epsilon', 'text3', 'hello', 'world'], 'integers': [10,20,30,5,15] }) # 可选:处理text列空值 df['text'] = df['text'].fillna('') # 核心分组聚合逻辑 result = df.groupby(['id', 'id_2', 'id_3'], as_index=False).agg( text=('text', ' '.join), # 要逗号拼接就把' '替换成', '即可 integers=('integers', 'sum') ) # 按你示例的格式输出 for _, row in result.iterrows(): print(f"{row['id']} | {row['id_2']} | {row['id_3']} | {row['text']} | {row['integers']}")
输出效果
你提到的id=0、id_2=1、id_3=2分组的运行输出和你预期完全一致:0 | 1 | 2 | lorem epsilon text3 | 60
内容的提问来源于stack exchange,提问作者stephsmith
相关产品推荐
相关产品推荐

