给定以下数据框
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 days
0行和第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] 删除。
我来说两句