0

我需要按 customer_id 对数据进行分组并获取购买日期间隔的平均值。我的数据如下所示:

date        customer_id
1/1/2020        1
1/2/2020        2
1/3/2020        3
1/4/2020        1
1/5/2020        2
1/1/2021        1
1/2/2021        2
1/3/2021        3

所以我需要看看每个客户的平均日期范围是多少。所需的输出是:

customer_id        Average_date_ranges(in months)
    1                       7
    2                       5
    3                       12
4

2 回答 2

0

我认为您可以简单地将日期列类型转换为datetime对象,然后调用groupby以获取平均日期。您可以使用以下代码:

df["date"] = pd.to_datetime(df["date"])
df.groupby("customer_id").mean()
于 2022-02-16T17:48:09.907 回答
0

一个简单的近似使用groupby_apply可能是:

>>> df.groupby('customer_id', as_index=False)['date'] \
      .apply(lambda x: round(x.diff().mean().days / 30, 0))

   customer_id  date
0            1   6.0
1            2   6.0
2            3  12.0
于 2022-02-16T17:49:32.347 回答