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

如何用Pandas筛选出在所有唯一日期都登录的用户

解决步骤

1. 移除用户单日重复登录记录

用drop_duplicates()方法,指定按User和Date列去重,确保每个用户每天仅保留一条记录:

import pandas as pd

# 构造原始DataFrame
data = {
    'Date': ['01/01/23', '01/01/23', '01/03/23', '02/03/23', '01/03/23', '01/02/23'],
    'User': ['Tom', 'Tom', 'Andrew', 'Andrew', 'Barry', 'Andrew']
}
df = pd.DataFrame(data)

# 去重操作:保留每个用户每天的第一条记录
df_unique = df.drop_duplicates(subset=['User', 'Date'], keep='first')

去重后的中间结果:

DateUser
01/01/23Tom
01/03/23Andrew
02/03/23Andrew
01/03/23Barry
01/02/23Andrew

2. 筛选全日期登录的用户

先统计所有唯一日期的总数,再筛选出登录日期数等于总日期数的用户,最后过滤出对应记录:

# 计算所有唯一日期的数量
total_dates = df_unique['Date'].nunique()

# 筛选出在所有日期都登录的用户
valid_users = df_unique.groupby('User')['Date'].nunique() == total_dates
valid_users_list = valid_users[valid_users].index.tolist()

# 得到最终结果
final_df = df_unique[df_unique['User'].isin(valid_users_list)]

最终结果和预期一致:

DateUser
01/03/23Andrew
02/03/23Andrew
01/02/23Andrew

如果想简化成一行代码(可读性稍弱):

final_df = df.drop_duplicates(subset=['User', 'Date']).groupby('User').filter(lambda x: x['Date'].nunique() == df['Date'].nunique())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:33:23