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

如何用DataFrame筛选Andy和Frank共同存在的日期对应的行?

解决方法

首先,先把你的数据用Pandas构造出可运行的DataFrame(新手可以直接复制这段代码):

import pandas as pd

data = {
    'date': ['2022-08-01', '2022-08-04', '2022-08-05', '2022-08-01'],
    'user': ['Andy', 'Mary', 'Marc', 'Frank']
}
df = pd.DataFrame(data)

下面提供两种适合新手的直观方法实现需求:

方法一:groupby + filter(最易理解)

先指定要匹配的用户集合,再按日期分组,筛选出包含所有目标用户的分组:

# 定义需要同时存在的用户
target_users = {'Andy', 'Frank'}

# 筛选出同时包含Andy和Frank的日期对应的所有行
result = df.groupby('date').filter(lambda group: target_users.issubset(group['user']))

方法二:先找符合条件的日期,再筛选行

先统计每个日期对应的用户集合,找出包含目标用户的日期,再用这些日期过滤原数据:

target_users = {'Andy', 'Frank'}

# 按日期分组,得到每个日期对应的用户集合
date_user_sets = df.groupby('date')['user'].apply(set)
# 筛选出包含所有目标用户的日期
valid_dates = date_user_sets[date_user_sets >= target_users].index
# 用这些日期过滤原DataFrame
result = df[df['date'].isin(valid_dates)]

两种方法运行后,result就是你需要的结果:

date   user
0  2022-08-01   Andy
3  2022-08-01  Frank

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:31:01