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

如何使用Pandas按用户统计各交易类型的交易次数并转换为宽表?

解决方案

你可以用两种简洁的方式实现这个统计需求:

方法一:groupby + unstack

先按User和Type分组统计交易次数,再将行索引中的Type转换为列,同时指定空值填充规则:

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    'User': [100,100,100,200,200,200,300,300,300],
    'Amount': [10,20,30,50,50,50,20,15,15],
    'Type': ['Check','Cash','Paypal','Venmo','Cash','Check','Zelle','Zelle','Zelle']
})

# 分组统计次数,转宽表,未交易的填充0(换成''就是留空)
result = df.groupby(['User', 'Type']).size().unstack(fill_value=0)
# 把User从索引转为普通列
result = result.reset_index()

print(result)

方法二:pd.crosstab(更直接)

crosstab是Pandas专门用于生成交叉频数表的工具,一步就能得到结果:

# 直接生成用户和交易类型的交叉次数表
result = pd.crosstab(df['User'], df['Type'])
# 若要将0替换为空字符串,执行下面一行
# result = result.replace(0, '')

print(result)

输出效果

两种方法都会生成你需要的格式:

  • 每行对应一个用户
  • 每列对应一种交易类型
  • 单元格值为该用户使用对应交易方式的次数,未使用的会显示0(或空字符串,根据你的设置)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:09:23