найти разницу в датах при группировке по одному клиенту
Есть таблица, в котрой есть столбец id. По каждому клиенут есть несколько дат платежей, например он платил 4-3 раза. Нужно найти разницу между этими платежами (pay_date) по каждому клиенту и сделать отдельный столбец. То есть не общую разницу найти, между первой и последней датой. А между первой и последующей датой и так далее, в рамках каждого клиента.
idx = df.reset_index().groupby(['id'])["index"].last().to_numpy()
df['life_time'] = df.groupby(['id'])['pay_date'].diff()
df.loc[idx, "life_time"] = df.loc[idx, "life_time"].combine_first(df.loc[idx, "pay_date"])
Далаю так, как показано на коде, и получается что дата просто переносится со столбца дата платежа, в новый столбец.
Вот здесь представлен один клиент,
В крайнем правом столбце, его платежи по датам, соответственно надо найти разницу между датами. И так по каждому клиенту.
Ответы (1 шт):
не уверен что до конца понял ваши пожелания, попробуйте такой вариант (по понятным причинам этот код не тестировался):
df['life_time'] = df.groupby('id')['pay_date'].apply(lambda x: x.diff().fillna(pd.Timedelta(days=0)).cumsum())
предполагается что pay_date имеет тип Datetime
