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

如何透视含重复Detail值的Pandas DataFrame,实现多收件人分开展示

问题原因

你当前使用aggfunc='sum'对字符串类型的Value值聚合时,pandas会自动将多个字符串拼接为单个值,且仅指定Agent作为唯一索引时,同一个Agent的所有记录会被合并到同一行,因此无法实现每个收件人单独成行的效果。

解决方案

核心思路是给同一个Agent下的同类型Detail的多值添加组内行号作为二级索引,保证透视时每个值对应单独一行,不会被聚合。
完整实现代码如下:

import pandas as pd

resultsFile = 'C:\\Oracle\\testfile.csv'
df = pd.read_csv(resultsFile, skip_blank_lines=True)

# 给同一个Agent、同个Detail的多条记录添加组内行号
df['row_num'] = df.groupby(['Agent', 'Detail']).cumcount()

# 透视时将Agent和行号共同作为索引,避免聚合拼接
df2 = df.pivot_table(
    index=['Agent', 'row_num'],
    columns='Detail',
    values='Value',
    aggfunc='first'
).reset_index().drop('row_num', axis=1) # 可选:移除辅助行号列,恢复干净的输出结构

print(df2)

效果说明

假设你的原始数据为:

AgentDetailValue
张三Email Recipientzhangsan@test.com
张三Email Recipientlisi@test.com
张三Department销售部
李四Email Recipientwangwu@test.com

处理后的输出会是:

AgentEmail RecipientDepartment
张三zhangsan@test.com销售部
张三lisi@test.com销售部
李四wangwu@test.comNaN

完全符合每个收件人单独成行的需求,其他非邮箱类的Detail字段值会自动填充到同Agent的所有行中。

注意事项

如果存在多个Detail类型都对应多值的场景,该方法会自动按最大的同Agent下多值数量生成行数,每个值都会对应到独立行,不会出现拼接问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:06:02