如何基于user_id与购买月份提取1月、2月均有购买的用户数据?
基于Pandas的实现代码
以下是针对该需求的完整实现方案,默认使用Python的Pandas库处理结构化表格数据:
- 首先对输入数据做初步筛选,仅保留1月(Jan)、2月(Feb)的购买记录
- 统计每个用户覆盖的月份数量,筛选出同时存在2个月份购买记录的用户
- 匹配提取这些用户的所有对应购买记录,即为所需结果
完整代码
import pandas as pd # ---------------------- 前置处理(无单独月份列时需执行)---------------------- # 假设你的日期列名为 purchase_date,存储可解析的日期格式(如2023-01-05、05/01/2023等) # df['purchase_date'] = pd.to_datetime(df['purchase_date']) # df['month'] = df['purchase_date'].dt.strftime('%b') # 自动生成Jan/Feb格式的月份标识 # ---------------------- 核心逻辑 ---------------------- # 1. 筛选1月、2月的所有记录,假设月份列名为month,用户ID列名为user_id jan_feb_records = df[df['month'].isin(['Jan', 'Feb'])] # 2. 找出同时有两个月购买记录的用户 valid_users = jan_feb_records.groupby('user_id')['month'].nunique()[lambda x: x == 2].index # 3. 提取目标用户的所有对应记录 output_df = jan_feb_records[jan_feb_records['user_id'].isin(valid_users)] # 按用户+月份排序(可选,匹配常规输出排版要求) output_df = output_df.sort_values(['user_id', 'month']).reset_index(drop=True) # 输出结果 print(output_df)
如果你的字段名和示例假设不同,替换代码中对应的列名字符串即可正常运行。
内容的提问来源于stack exchange,提问作者Mr_question
相关产品推荐
相关产品推荐

