python - 有没有办法根据特定条件从数据框中的日期时间列中找到经过的时间?
问题描述
我有一个称为动作的数据框。这些列是 user_id、action_timestamp 和 action。用户是在 action_timestamp 给定的特定时间执行操作的学生。
哪个学生的不间断会话时间最长?(这里的“会话”定义为学生执行一系列动作之间的时间少于 10 分钟的时间长度;当系列中的下一个动作在 10 分钟或更长时间后执行时,“会话”停止最后一个,之后新的“会话”开始)
我正在尝试的代码:
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
这并不能证明是正确的答案。任何帮助将非常感激。谢谢你。
解决方案
试试这个np.where
:
new['diff'] = new['action_timestamp'].diff().astype('timedelta64[m]')
new['session'] = np.where(new['diff'].gt(10), 0, 1)
推荐阅读
- c# - 使用 TSPL/TSPL2 和 C# 获取打印机状态
- mongodb - 使用 express 和 mongodb 存储到具有单个对象数据的多个文档中
- windows - 有没有办法可以将我的外部硬盘捕获为可移动驱动器
- php - 无法对另一个 Laravel 网站执行 API 调用
- javascript - 是的,基于其他字段值的多重条件验证
- google-cloud-platform - Google Cloud AI 平台 -- 未检测到正在运行的 VM 实例
- python - 在 plotly dash 上创建条形图的问题
- typescript - Typscript 错误 2322 - 无法初始化 2 个可选索引签名的通用类型联合的常量
- python - 在 Python 中从给定数组创建一组子数组
- reactjs - “react-useanimations”属性“animationKey”在“IntrinsicAttribute”类型上不存在