# Pre-processing to sort the data and convert date to the required date format
df = df.sort_values(['Customer_id', 'purchase_date'])
df['purchase_date'] = pd.to_datetime(df['purchase_date'])
# Set boolean mask
mask = (((df['purchase_date'] - df['purchase_date'].groupby(df['Customer_id']).shift()).dt.days <= 30)
.groupby(df['Customer_id'])
.transform('any')
)
s = df.groupby('Customer_id')['purchase_date'].apply(lambda x : (x.iloc[1]-x.iloc[0]).days<30)
out = df.loc[df.Customer_id.isin(s.index[s])].drop_duplicates('Customer_id')
3条答案
按热度按时间mbjcgjjk1#
您可以设置一个布尔掩码来过滤30天内第二次购买的客户组,如下所示:
那么,我们已经可以通过以下代码过滤30天内第二次购买的客户的交易记录:
要进一步显示customer_id及其各自的首次购买日期,您可以使用:用途:
jjjwad0x2#
你可以用
groupby
来做uurity8g3#
这里有一个方法:
或
或
输出量: