我有一个用户活动的数据框架,包含用户ID和活动时间。我试图计算每个用户活动之间的平均时间差。当用户只活动了1天时,我已经成功地做到了这一点,但当用户活动了好几天时,我就很难做到了。
例如:
| 用户ID|活动日期|
| - ------| - ------|
| 1个|2021年7月26日下午8:29:01|
| 1个|2021年7月26日下午8:28:01|
| 1个|2021年7月26日下午8:32:01|
我使用了以下代码,它工作正常:
df.sort_values('Activity Date').groupby(['UserId'])['Activity Date'].apply(lambda x: x.diff().mean())
我的问题是,当用户在多天内处于活动状态时,使用我的代码,我仍然会得到一个平均值,但它不能以我需要的方式表示活动。
| 用户ID|活动日期|
| - ------| - ------|
| 1个|2021年7月25日下午8:29:01|
| 1个|2021年7月26日下午8:29:01|
| 1个|2021年7月26日下午8:32:01|
| 1个|2021年7月25日下午8:28:01|
我想先计算每天的平均值,然后再计算平均值的平均值。
我的代码给出了以下结果:481分333秒。
我希望它是:2分钟(对于25/07 - 1分钟差异,对于26/07 - 3分钟差异=〉,因此平均值为2分钟)。
我将非常感谢您的帮助或任何建议!
谢谢!
1条答案
按热度按时间voj3qocg1#
您可以执行两次
groupby
,首先对用户和日期执行,然后对用户执行:输出: