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

如何在pandas中对字符串列表进行Group By分组操作?

Pandas 按列表列分组并合并字符串列

解决步骤

因为列表属于不可哈希类型,无法直接作为分组键,所以先将Column 2的列表转为元组,再执行分组聚合:

  1. 构造测试数据(模拟你的输入):
import pandas as pd

data = {
    "Column 1": ["Task 1", "Task 37", "Task 5", "Task 12"],
    "Column 2": [["emailofowner1","emailofowner2"], ["emailofowner1","emailofowner2"], ["emailofowner3"], ["emailofowner3"]],
    "Column 3": ["John Doe", "John Doe", "Jane Smith", "Jane Smith"]
}
df = pd.DataFrame(data)
  1. 将列表列转为元组,用于分组:
df['Column 2 Tuple'] = df['Column 2'].apply(tuple)
  1. 分组并聚合:
result = df.groupby(['Column 2 Tuple', 'Column 3']).agg(
    Column1=('Column 1', list),
    Column2=('Column 2', 'first'),
    Column3=('Column 3', 'first')
).reset_index(drop=True).rename(columns={'Column1': 'Column 1', 'Column2': 'Column 2'})

最终输出

运行后result的结果如下:

Column 1Column 2Column 3
["Task 1", "Task 37"]["emailofowner1","emailofowner2"]John Doe
["Task 5", "Task 12"]["emailofowner3"]Jane Smith

简化写法(一步到位)

如果不想额外创建中间列,可以直接在分组时转换列表:

result = df.groupby(
    [df['Column 2'].apply(tuple), 'Column 3']
).agg(
    Column1=('Column 1', list),
    Column2=('Column 2', 'first'),
    Column3=('Column 3', 'first')
).reset_index(drop=True).rename(columns={'Column1': 'Column 1', 'Column2': 'Column 2'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:15:37