获取 pandas 中某些日期范围的平均值

get the average of some ranges of dates in pandas

我需要按 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

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

df["date"] = pd.to_datetime(df["date"])
df.groupby("customer_id").mean()

使用 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