You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按相同id合并单列与其他列?如何按id为各列添加标签并实现分组?

问题解决:按id合并列并分组操作

你想要按id_text分组,把同一组的id_word用逗号拼接、word用斜杠拼接对吧?看你给出的示例数据和期望结果,用pandas的分组聚合功能就能轻松实现,比你现在写的循环方法高效太多了,我来帮你调整下代码:

实现步骤

首先确保你已经安装了pandas(如果没有的话先运行pip install pandas),然后按下面的代码来:

import pandas as pd

# 第一步:读取你的原始CSV数据
df = pd.read_csv('你的原始文件路径.csv')

# 第二步:按id_text分组并聚合列
result_df = df.groupby('id_text').agg(
    id_word=('id_word', lambda x: ','.join(map(str, x))),  # 把同一组的id_word转成字符串后用逗号拼接
    word=('word', lambda x: '/'.join(x))                  # 把同一组的word用斜杠拼接
).reset_index()  # 把分组后的索引转为普通列,恢复你想要的表格结构

# 第三步:把结果保存到新的CSV文件
result_df.to_csv('你的输出文件路径.csv', index=False)

代码解释

  • groupby('id_text'):这一步就是核心的分组操作,把所有id_text相同的行归为一组
  • agg():全称aggregate,用来对每个分组的指定列执行自定义聚合逻辑:
    • 对于id_word,因为它是数字类型,所以先用map(str, x)把每个元素转成字符串,再用','.join()拼接
    • 对于word,本身就是字符串类型,直接用'/'.join()拼接即可
  • reset_index():分组后id_text会变成DataFrame的索引,用这个方法把它变回普通列,让结果结构和你期望的完全一致

说说你原有代码的问题

你原来的循环逻辑存在几个关键问题:

  1. if i==i-1这个条件永远不成立,i不可能等于i-1,所以里面的代码根本不会执行
  2. 你是逐行调用columns函数,每次只传入单条数据,函数无法获取同一分组的其他行数据,自然没法完成拼接
  3. 列表l的append用法错误,append只能接收一个参数,你写l.append(text_id,word_id)会直接报错

内容的提问来源于stack exchange,提问作者d12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:53:11