如何用Pandas按创建日期统计提前3个月开户的贷款用户
需求说明
现有数据表包含USER_ID、date_opened、Loan_created三个字段,需统计每个用户中满足date_opened早于Loan_created提前3个月的记录数,最终按USER_ID维度输出计数结果。
示例输入数据
USER_ID date_opened Loan_created 1 22/12/2022 23/03/2023 1 12/12/2021 12/02/2021 1 06/05/2021 07/09/2021
期望输出
USER_ID Count 1 2
Pandas实现方案
以下是具体的实现步骤:
导入Pandas库并构造示例数据
先导入必要的库,若读取外部数据可替换为pd.read_csv()等方法:import pandas as pd data = { 'USER_ID': [1, 1, 1], 'date_opened': ['22/12/2022', '12/12/2021', '06/05/2021'], 'Loan_created': ['23/03/2023', '12/02/2021', '07/09/2021'] } df = pd.DataFrame(data)转换日期字段为datetime类型
原始日期为字符串格式,需转换为datetime类型才能进行日期计算,注意此处日期格式为日/月/年,需指定dayfirst=True:df['date_opened'] = pd.to_datetime(df['date_opened'], dayfirst=True) df['Loan_created'] = pd.to_datetime(df['Loan_created'], dayfirst=True)筛选满足条件的记录
通过计算Loan_created往前推3个月的日期,判断date_opened是否早于或等于该日期:mask = df['date_opened'] <= df['Loan_created'] - pd.DateOffset(months=3) filtered_df = df[mask]按用户分组统计数量
对筛选后的结果按USER_ID分组,统计每组记录数并将结果列重命名为Count:result = filtered_df.groupby('USER_ID').size().reset_index(name='Count')查看结果
打印输出最终结果:print(result)
运行代码后输出与期望一致:
USER_ID Count 0 1 2
内容的提问来源于stack exchange,提问作者Data Guy
相关产品推荐
相关产品推荐

