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

如何在Pandas中透视DataFrame并合并重复交叉项?

解决方案

要实现你需要的透视并合并重复交叉项的效果,可以通过分组聚合+透视的方式完成,以下是两种可行的Pandas实现方案:

方法一:groupby 配合 unstack

import pandas as pd

# 构造你的原始DataFrame
df = pd.DataFrame({
    'Column A': ['boo', 'boo', 'boo', 'boo'],
    'Column B': ['ptype', 'tecnh', 'ptype', 'staaa'],
    'Column C': ['123', '34e', '34w', '45r']
})

# 按Column A和Column B分组,将同组的Column C内容用逗号拼接
grouped_data = df.groupby(['Column A', 'Column B'])['Column C'].apply(','.join).unstack()

# 将索引转换为普通列,得到目标结构
final_result = grouped_data.reset_index()
print(final_result)

方法二:直接使用 pivot_table

import pandas as pd

df = pd.DataFrame({
    'Column A': ['boo', 'boo', 'boo', 'boo'],
    'Column B': ['ptype', 'tecnh', 'ptype', 'staaa'],
    'Column C': ['123', '34e', '34w', '45r']
})

# 用透视表指定聚合逻辑:对相同交叉项的Column C做逗号拼接
final_result = df.pivot_table(
    index='Column A',
    columns='Column B',
    values='Column C',
    aggfunc=lambda x: ','.join(x),
    fill_value=''
).reset_index()

# 移除列名的多级索引标识
final_result.columns.name = None
print(final_result)

说明

你之前尝试的line.apply(lambda row: ','.join(row.values.astype(str)), axis=1)是对整行所有列内容进行拼接,不符合需求。我们需要的是针对同一Column A+Column B组合下的Column C值进行聚合拼接,再通过透视转换为目标列结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:15:39