访问间隔列表

威廉007

给定以下数据框

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'])
       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

我希望获取两个人的访问间隔列表,在此示例中,结果应为

  avg_visited_interval  name
0                [4,1]  John
1                [2,2]  Mary

我应该如何实现呢?(例如,在第一个示例中,第4 days0行和第12 days之间以及第1行和第2行之间存在,结果为[4,1]

耶斯列尔

结合使用自定义lambda函数Series.diff,按位置删除第一个值,转换为整数并列出:

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]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章