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

如何使用Pandas识别数据集中状态发生变更的用户?

找出状态发生变更的用户方法

以下是几种常用工具的实现方案:

1. SQL 实现

如果数据存储在数据库中,可通过分组统计快速筛选:

SELECT username
FROM your_table_name
GROUP BY username
HAVING COUNT(DISTINCT status) > 1;

逻辑:按用户名分组后,统计每个用户的唯一状态数量,数量大于1说明该用户的状态发生过变更。

2. Python Pandas 实现

如果用Python处理本地数据集,可通过分组筛选实现:

import pandas as pd

# 读取数据集(示例为csv格式,根据实际格式调整)
df = pd.read_csv('your_data_file.csv')

# 分组计算每个用户的唯一状态数,筛选出状态有变更的用户
changed_users = df.groupby('username')['status'].nunique()
result = changed_users[changed_users > 1].index.tolist()

print("状态发生变更的用户:", result)

逻辑:通过groupby按用户名分组,nunique()统计每组的唯一状态值数量,最后筛选出数量大于1的用户。

进阶:查看具体变更记录

如果数据集包含时间戳列,还能定位到状态变更的具体节点:

  • SQL 可使用LAG窗口函数对比前后状态:
SELECT username, status, timestamp
FROM (
    SELECT 
        username, 
        status, 
        timestamp,
        LAG(status) OVER (PARTITION BY username ORDER BY timestamp) AS prev_status
    FROM your_table_name
) t
WHERE status != prev_status;
  • Pandas 可使用shift()方法对比:
# 假设数据集有timestamp列,先按用户和时间排序
df_sorted = df.sort_values(by=['username', 'timestamp'])
# 新增前一行状态列
df_sorted['prev_status'] = df_sorted.groupby('username')['status'].shift(1)
# 筛选状态发生变化的行
change_records = df_sorted[df_sorted['status'] != df_sorted['prev_status']].dropna()

print(change_records)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:15:41