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

如何基于DataFrame的User列统计Action列各唯一值计数并重构表格

解决方案

可以用以下几种方法实现你需要的用户-页面访问次数统计:

方法1:使用pd.crosstab(最简洁)

crosstab专门用于统计两个列的交叉频次,刚好匹配你的需求:

import pandas as pd

# 假设你的原始DataFrame是df
result = pd.crosstab(df['User'], df['Action']).reset_index()
# 确保空值填充为0且是整数类型
result = result.fillna(0).astype(int)
print(result)

运行后输出格式完全符合要求:

User  Page1  Page2  Page3
0   AA      2      1      0
1   BB      0      1      1
2   CC      0      0      2

方法2:使用pivot_table(更灵活)

如果后续需要扩展聚合逻辑,用透视表适配性更强:

result = df.pivot_table(
    index='User',
    columns='Action',
    aggfunc='size',  # 统计每组的行数
    fill_value=0     # 直接将缺失计数填充为0
).reset_index()
result.columns.name = None  # 移除列索引的"Action"标识
print(result)

这个方法通过分组计数后转宽表,同样能得到目标结果,适合更复杂的统计场景。

补充说明

你之前用df['User'].value_counts()只能统计每个用户的总操作次数,而要拆分到具体页面,核心是按用户和页面分组计数,再将页面维度转成列,上面两种方法本质都是完成这个逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:06