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

按列分组后计算另一列项的出现次数及用户session数统计方法咨询

按列分组后计算另一列项的出现次数及用户session数统计方法咨询

看起来你是想统计每个用户对应的会话(session)数量对吧?先看你给的原始数据,我猜应该是有些行的User列是空值,其实是属于上一行的用户?不然输出里User1有4个、User2有2个就不太好解释啦。下面分两种常用的数据处理工具给你说具体方法:

一、用Python Pandas处理

首先得把数据里空的User值填充成上一个非空的User值,再分组统计数量:

import pandas as pd

# 假设你的数据读入后存储在df变量中
df['User'] = df['User'].ffill()  # 向前填充空的User值,让每行都有对应的用户
session_count = df.groupby('User').size().reset_index(name='session_count')
print(session_count)

这样处理后就能得到你想要的结果,对应你给出的示例就是User1有4条会话、User2有2条会话。

如果只有非空的Session id才算有效会话,那把统计逻辑改成针对Session id列计数即可:

session_count = df.groupby('User')['Session id'].count().reset_index(name='session_count')

二、用SQL处理

如果数据存在数据库里,可以先用窗口函数填充空的User值,再分组统计:

WITH filled_data AS (
    SELECT 
        User,
        Session_id,
        -- 用窗口函数填充空User,取上一个非空的用户值
        LAST_VALUE(User IGNORE NULLS) OVER (ORDER BY (SELECT NULL) ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS filled_user
    FROM your_table_name
)
SELECT 
    filled_user AS User,
    COUNT(*) AS session_count
FROM filled_data
GROUP BY filled_user
ORDER BY User;

这里ORDER BY (SELECT NULL)是为了保持原始数据的顺序,如果你有时间戳这类明确的排序字段,替换成它会更准确。

同样,如果只统计非空的Session id,把COUNT(*)改成COUNT(Session_id)就可以了,因为COUNT函数会自动忽略空值。

备注:内容来源于stack exchange,提问作者Sophie Martusewicz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:12:30