首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问间隔列表

访问间隔列表
EN

Stack Overflow用户
提问于 2021-02-25 21:21:50
回答 1查看 23关注 0票数 -1

给定以下数据帧

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({'visited': ['2015-3-1', '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                [4,1]  John
1                [2,2]  Mary

我应该如何实现这一点?(例如,对于第一个示例,存在4 days第0行和第1行之间以及2 days在第1行和第2行之间,这导致[4,1])

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-25 21:26:50

使用自定义lambda函数`Series.diff`,按位置删除第一个值,转换为整数和列表:

代码语言:javascript
复制
df = (df.groupby('name')['visited']
        .apply(lambda x: x.diff().iloc[1:].dt.days.astype(int).tolist())
        .reset_index(name='intervals'))
print (df)
   name intervals
0  John    [4, 1]
1  Mary    [2, 2]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66369344

复制
相关文章

相似问题

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