首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同人群的平均访问间隔

不同人群的平均访问间隔
EN

Stack Overflow用户
提问于 2021-02-19 16:25:07
回答 2查看 28关注 0票数 3

给定以下数据帧

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'visited': ['2015-3-4', '2015-3-5','2015-3-6','2016-3-4', '2016-3-6', '2016-3-8'],'name':['John','John','John','Mary','Mary','Mary']})
df['visited']=pd.to_datetime(df['visited'])
代码语言:javascript
复制
       visited  name
0   2015-03-01  John
1   2015-03-05  John
2   2015-03-06  John
3   2016-03-04  Mary
4   2016-03-06  Mary
5   2016-03-08  Mary

我希望计算两个人每天的平均访问间隔,在这个例子中,结果应该是

代码语言:javascript
复制
  avg_visited_interval  name
0                    1  John
1                    2  Mary

我怎么发动汽车呢?

EN

回答 2

Stack Overflow用户

发布于 2021-02-19 16:31:26

您可以将groupby.applydiffmean一起使用,如下所示:

代码语言:javascript
复制
df.groupby('name')['visited'].apply(lambda x: x.diff().mean()).to_frame('avg_visited_interval')

结果:

代码语言:javascript
复制
name    avg_visited_interval
John                  1 days
Mary                  2 days

此处的avg_visited_interval列将为datetime类型。要将该列设置为整数(即天数),可以在diff()mean()之间添加dt.days

票数 3
EN

Stack Overflow用户

发布于 2021-02-19 16:30:31

使用带有lambda函数的GroupBy.agg表示Series.diff的差异,使用Series.dt.days将时间增量转换为天,最后使用Series.reset_index

代码语言:javascript
复制
df = (df.groupby('name')['visited']
        .agg(lambda x: x.diff().dt.days.mean())
        .reset_index(name='avg_visited_interval'))
print (df)
   name  avg_visited_interval
0  John                   1.0
1  Mary                   2.0

最后,如有必要,更改列的顺序:

代码语言:javascript
复制
df = df[['avg_visited_interval','name']]
print (df)
   avg_visited_interval  name
0                   1.0  John
1                   2.0  Mary
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66274035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档