【问题标题】:Last Visited Interval for different people不同人的上次访问时间间隔
【发布时间】:2021-05-22 11:32:26
【问题描述】:

给定以下数据框

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

我希望计算两个人最后一次访问的时间间隔,在这个例子中,结果应该是

  last_visited_interval  name
0                    1  John
1                    2  Mary

由于“2015-3-5”、“2015-3-6”的间隔为 1,“2016-3-6”、“2016-3-8”的间隔为 2

我试过了 df.groupby('name').agg(last_visited_interval=('visited',lambda x: x.diff().dt.days.last())), 但得到了例外 last() 缺少 1 个必需的位置参数:'offset'

我该怎么做?

【问题讨论】:

    标签: python-3.x pandas pandas-groupby


    【解决方案1】:

    如果检查 Series.last 它的工作方式不同 - 它返回 DatetimeIndex 的最后一个日期时间值,它也不是 GroupBy.last,因为在 lambda 函数中使用 Series。所以你可以使用Series.ilocSeries.iat

    df.groupby('name').agg(last_visited_interval=('visited',lambda x:x.diff().dt.days.iat[-1]))
    

          last_visited_interval
    name                       
    John                    1.0
    Mary                    2.0
    

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2014-06-14
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多