按平均小时数分组

2024-09-27 00:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数据 测向:

month   name    duration
5       abc     09:03:00
5       abc     09:09:00
5       eef     10:03:00
5       eef     09:03:00
5       eef     09:03:00
5       ttk     10:03:00
5       abc     09:03:00
5       ttk     09:23:00
6       ttk     09:03:00
6       abc     11:03:00

我需要按此分组才能得到这样的结果:

month   name    name_size   name_nuique duration_mean
5       abc     3           1           09:05:00
        eef     3           1           09:23:00
        ttk     2           1           09:43:00
6       abc     1           1           09:03:00
        ttx     1           1           11:03:00

请告诉我怎么做。 我试过了

df.groupby(['month','name'], sort=False).agg({'name':['size','nunique'],
          'duration':['mean']})

但我的错误是:

No numeric types to aggregate


Tags: 数据namefalsedfsizemeansortduration
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:14

标准的pandasmean()不能处理timedelta。将列转换为timedelta后,对其应用自定义lambda函数:

df["duration"] = pd.to_timedelta(df["duration"])
df.groupby(["month", "name"], sort=False).agg({
                               "name": ["size", "nunique"],
                               "duration": [lambda x: x.mean()]})

相关问题 更多 >

    热门问题