首页 > 解决方案 > 有没有办法根据特定条件从数据框中的日期时间列中找到经过的时间?

问题描述

我有一个称为动作的数据框。这些列是 user_id、action_timestamp 和 action。用户是在 action_timestamp 给定的特定时间执行操作的学生。

哪个学生的不间断会话时间最长?(这里的“会话”定义为学生执行一系列动作之间的时间少于 10 分钟的时间长度;当系列中的下一个动作在 10 分钟或更长时间后执行时,“会话”停止最后一个,之后新的“会话”开始)df 的子集

我正在尝试的代码:

new['diff']= new['action_timestamp'].diff().astype('timedelta64[m]')

for i in new['diff']:
    if not np.isnan:
        if (i <=10.0):
            new['session']= 1.0
        else:
            new['session']=0.0

new.loc[new['diff'] <= 10.0, 'session'] = 1.0 
new.loc[new['diff'] > 10.0, 'session'] = 0.0 

这并不能证明是正确的答案。任何帮助将非常感激。谢谢你。

标签: pythonpython-3.xdataframedatetimeif-statement

解决方案


试试这个np.where

new['diff'] = new['action_timestamp'].diff().astype('timedelta64[m]')
new['session'] = np.where(new['diff'].gt(10), 0, 1)

推荐阅读