【问题标题】:Getting the number rows if the datetime colum value is with a certain interval如果日期时间列值具有特定间隔,则获取行数
【发布时间】:2017-08-25 00:44:19
【问题描述】:

我的 start-date 值为 2015-01-13 12:00 和 end-date 值为 2015-01-16 12:00,这是一个 4 天 间隔。我想获取学生在此间隔的每一天进行活动的天数。例如给定这个数据框(请考虑也有重复):

userid  |  activityday
111        2015-01-13 12:00
111        2015-01-13 12:00
111        2015-01-14 12:00
222        2015-01-13 12:00
222        2015-01-14 12:00
222        2015-01-15 12:00
333        2015-01-13 12:00
333        2015-01-14 12:00
333        2015-01-15 12:00
333        2015-01-15 12:00
333        2015-01-16 12:00

我要获取:

userid |  days_active
111    |  2
222    |  3
333    |  4

我可以使用循环来做到这一点,但这需要很长时间。我想知道是否有一种方便的方法来实现这一点?

【问题讨论】:

    标签: python pandas datetime python-datetime


    【解决方案1】:
    df.activityday.dt.date.groupby(df.userid).nunique()
    
    userid
    111    2
    222    3
    333    4
    Name: activityday, dtype: int64
    

    发生了什么

    • 您可以通过dt 访问器访问许多与datetime 相关的矢量化函数。 dt.date 仅返回 datetime 值的 date 部分。这是我们关心的关于一天内活动数量的部分。
    • 然后我 groupby 'useid' 并使用 nunique 函数(数字唯一)和中提琴。

    您可以添加一点格式来获得您所要求的内容。即reset_index

    df.activityday.dt.date.groupby(
        df.userid
    ).nunique().reset_index(name='days_active')
    
       userid  days_active
    0     111            2
    1     222            3
    2     333            4
    

    【讨论】:

    • 哇!你能提供一些解释吗?例如dt.date 做什么?
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 2021-11-20
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多