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

Pandas中按类别透视并去重交易ID后求和的实现方法

用pivot_table还是groupby实现去重后透视求和?

当然两种方法都能实现你的需求!关键是要先完成按Transaction_ID去重的步骤,不然直接用你现有的pivot_table代码会把重复交易的Transaction_Row重复累加,不符合要求。

方法一:先去重再用pd.pivot_table

因为同一个Transaction_ID对应的Transaction_Row和Category是一致的,我们可以先把重复的交易记录去掉,再做透视求和:

import pandas as pd
import numpy as np

# 第一步:按Transaction_ID去重,保留每条交易的唯一记录
df_unique = df.drop_duplicates(subset=['Transaction_ID'])

# 第二步:用pivot_table按Category透视,对Transaction_Row求和
pivot_result = pd.pivot_table(
    df_unique,
    index=["Category"],
    values=["Transaction_Row"],
    aggfunc=np.sum
)

这样处理后,Transaction_ID=123的-1只会被统计一次,最终的透视结果就符合你的要求了。

方法二:用groupby直接完成

如果你不想单独生成去重后的DataFrame,也可以用嵌套groupby一步到位:

# 先按Category+Transaction_ID分组,取每组的Transaction_Row(因为同交易的数值一致,用first/max/min都可以)
# 再按Category汇总求和
groupby_result = df.groupby(['Category', 'Transaction_ID'])['Transaction_Row'].first().groupby('Category').sum()

这种方式更紧凑,本质是先完成了交易级别的去重,再做分类求和。

简单来说:如果偏好透视表的输出格式,先去重再用pivot_table完全可行;如果想写更简洁的代码,嵌套groupby是不错的选择,两种方法都能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:50