PANDAS分组2列,然后计数并取平均值

jgovgodb  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(145)

我有一个用户的数据框架,每次他们进入一个网站,它看起来像这样:
(if有x行具有相同的星期和日期,这意味着用户在该日期x次进入站点)。
| 识别号|星期|日期|
| - ------|- ------|- ------|
| 1个|第二章|2021年7月20日|
| 第二章|三个|2021年7月23日|
| 第二章|三个|2021年7月23日|
| 第二章|三个|2021年7月26日|
| 第二章|四个|2021年7月30日|
| 第二章|四个|2021年7月30日|
| 第二章|四个|2021年7月30日|
| 第二章|四个|2021年7月31日|
到目前为止我已经做到了
| 识别号|星期|日期|天数|
| - ------|- ------|- ------|- ------|
| 1个|第二章|2021年7月20日|1个|
| 第二章|三个|2021年7月23日|第二章|
| 第二章|三个|2021年7月26日|1个|
| 第二章|四个|2021年7月30日|三个|
| 第二章|四个|2021年7月31日|1个|
使用此代码:

df.groupby(['ID','week','date']).agg({'date':['count']})

但是我需要计算每个用户每周使用网站的平均次数,所以每个用户每周都有一行,因此我需要的输出如下所示:
| 识别号|星期|平均天数|
| - ------|- ------|- ------|
| 1个|第二章|1个|
| 第二章|三个|1.5岁|
| 第二章|四个|第二章|
你知道怎么继续吗?
谢谢!

bqjvbblv

bqjvbblv1#

用途:

(df.groupby(['ID', 'week', 'date'], as_index=False)['date']
 .agg('count')
 .groupby(['ID', 'week'], as_index=False)
 .agg(**{'mean days number': ('date', 'mean')})
)

输出:

ID  week  mean days number
0   1     2               1.0
1   2     3               1.5
2   2     4               2.0

相关问题