如何为pandas数据框中的不同组分配唯一的ID?

2024-04-26

如何根据特定条件为 pandas 数据框中创建的组分配唯一 ID。 例如:我有一个名为 df 的数据框,其结构如下:名称标识用户,日期时间标识用户访问资源的日期/时间。

Name         Datetime 
Bob          26-04-2018 12:00:00 
Claire       26-04-2018 12:00:00 
Bob          26-04-2018 12:10:00 
Bob          26-04-2018 12:30:00 
Grace        27-04-2018 08:30:00 
Bob          27-04-2018 09:30:00 
Bob          27-04-2018 09:40:00 
Bob          27-04-2018 10:00:00 
Bob          27-04-2018 10:30:00 
Bob          27-04-2018 11:30:00

我想为用户创建会话,这样,具有相同名称和日期时间值的用户访问资源的时间不超过 30 分钟,就会被分配一个唯一的会话。但是,如果用户在访问资源时表现出超过 30 分钟的不活动状态,则下次用户访问资源时,将为同一用户分配不同的会话。

我的预期输出将如图所示。

用户 Bob 于 27-04-2018 于 9.30 访问资源,第二次 @ 9.40,第三次 @ 10.00,第四次 @10.30 -> 均使用会话 4。但下次用户 Bob 访问 @ 11.30,因此时间差超过 30 分钟由于 Bob 已超过 30 分钟不活动,因此下一个会话将分配给他。

Name         Datetime                    Id
Bob          26-04-2018 12:00:00          1
Claire       26-04-2018 12:00:00          2
Bob          26-04-2018 12:10:00          1
Bob          26-04-2018 12:30:00          1
Grace        27-04-2018 08:30:00          3
Bob          27-04-2018 09:30:00          4
Bob          27-04-2018 09:40:00          4
Bob          27-04-2018 10:00:00          4
Bob          27-04-2018 10:30:00          4
Bob          27-04-2018 11:30:00          5

感谢您的帮助! 上一个问题的链接:如何比较 pandas 数据框中第二列的值与第一列的相同值? https://stackoverflow.com/q/56960065/3873482


您在底部的解释对于理解它确实很有帮助。

你需要进行分组Name and a groupID(不要混淆这个groupID与你的最后Id)并致电ngroup回来Id。主要是如何定义这个groupID。创造groupID, 你需要sort_values将每个分开Name and Datetime升序排列。通过...分组Name并找出差异Datetime每组内的连续行之间Name(在同一Name)。使用gt检查超过30分钟并且cumsum to get groupID. sort_index反转回原始顺序并分配给s如下:

s = df.sort_values(['Name','Datetime']).groupby('Name').Datetime.diff() \
      .gt(pd.Timedelta(minutes=30)).cumsum().sort_index()

接下来,分组Name and s with sort=False保留原始订单并致电ngroup plus 1.

df['Id'] = df.groupby(['Name', s], sort=False).ngroup().add(1)

Out[834]:
     Name            Datetime  Id
0     Bob 2018-04-26 12:00:00   1
1  Claire 2018-04-26 12:00:00   2
2     Bob 2018-04-26 12:10:00   1
3     Bob 2018-04-26 12:30:00   1
4   Grace 2018-04-27 08:30:00   3
5     Bob 2018-04-27 09:30:00   4
6     Bob 2018-04-27 09:40:00   4
7     Bob 2018-04-27 10:00:00   4
8     Bob 2018-04-27 10:30:00   4
9     Bob 2018-04-27 11:30:00   5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为pandas数据框中的不同组分配唯一的ID? 的相关文章

  • Python数据框将列表列分解为多行[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 desc id info a b c 2 type u v w 18 tail 三列 desc id info desc 是一个列表 我想要这个 des id info a 2 type
  • SQLAlchemy 闭包表关系定义

    我最近开始使用 SQL Alchemy 开展一个涉及攀岩区域和路线的项目 区域是分层的 因为单个区域可以包含多个区域 而多个区域又可以包含其他区域 路线直接与单个区域关联 但也与该区域的父区域关联 等等 为了实现这一点 我选择使用Bill
  • Pythonic方式逐行读取文件?

    以下两种方法中逐行读取文件的 Pythonic 方法是什么 with open file r as f for line in f print line or with open file r as f for line in f read
  • 使用分组的多列熊猫绘制堆积条形图

    我有两个数据框 我需要获取它们之间的差异 然后在该差异之上绘制其中一个数据框 这是一个最小的例子 import pandas as pd import matplotlib pyplot as plt df1 pd DataFrame 2
  • Keras AttributeError:“顺序”对象没有属性“predict_classes”

    我试图按照本指南找到模型性能指标 F1 分数 准确性 召回率 https machinelearningmastery com how to calculate precision recall f1 and more for deep l
  • chrome_options.binary_location() TypeError: 'str' 对象不可调用

    我希望每个人都好 我是 python 新手 我尝试运行这段代码 但我不明白问题是什么以及如何解决这个问题 我的代码是 from selenium import webdriver from time import sleep url raw
  • 使用数据库数据模型生成 SQLAlchemy 模型、架构和 JSON 响应

    将 Flask 和 SQLAlchemy 用于 Python Web 应用程序 我的目标是创建一个系统 在其中我可以 从现有 PostgreSQL 数据库导入数据模型 并将它们映射到相应 SQLAlchemy 模型中的字段 使用这些 SQL
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 对seaborn图中的分类x轴进行排序

    我正在尝试使用 seaborn 散点图绘制数据框中前 30 的值 如下所示 同一图的可重现代码 import seaborn as sns df sns load dataset iris function to return top 30
  • Pandas 无法读取使用 h5py 创建的 hdf5 文件

    当我尝试读取使用 h5py 创建的 HDF5 格式文件时 出现 pandas 错误 我想知道我是否只是做错了什么 import h5py import numpy as np import pandas as pd h5 file h5py
  • 向 list.extend() 传递不可迭代对象

    我正在创建一个公共方法来允许调用者将值写入设备 例如将其称为 write vals 由于这些值将实时输入 因此我希望通过允许用户输入列表或单个值来简化用户的生活 具体取决于他们需要写入的值的数量 例如 write to device 1 2
  • 无法写入文本文件

    我正在运行一些测试并需要写入文件 当我运行测试时open file r 不写入文件 测试脚本如下 class GetDetailsIP TestGet def runTest self self category PTZ try This
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • Pytest 插件:覆盖 pytest_runtest_call 和朋友

    我正在为我的一个项目使用 pytest 开发一个测试套件 由于项目的性质 我需要创建一个 Pytest 插件来控制测试的运行方式 它们不是在本地运行 而是发送到不同的进程来运行 我知道关于xdist但我认为这并不能解决我的问题 我一直在通过
  • matplotlib 轴标签偏移量的因素和变化

    在 matplotlib 中的轴刻度标签上 有两种可能的偏移量 factors and shifts 在右下角 1e 8 是一个 因子 1 441249698e1 是一个 移位 这里有很多答案展示了如何操纵两个都 matplotlib 将轴
  • 如何按分层类别结构中的值对 pandas 中的数据框进行排序

    我有一个 pandas 数据框 pd DataFrame category Transport Transport Car Transport Train Household Household Utilities Household Ut
  • Python 中的延迟求值/惰性求值

    我想延迟对类实例的成员函数的调用的评估 直到该实例实际存在 最小工作示例 class TestClass def init self variable 0 self variable 0 variable 0 def get variabl
  • 如何从已安装的云端硬盘文件夹中永久删除?

    我编写了一个脚本 在每次迭代后将我的模型和训练示例上传到 Google Drive 以防发生崩溃或任何阻止笔记本运行的情况 如下所示 drive path drive My Drive Colab Notebooks models if p
  • mpld3图,注释问题

    我正在使用 mpld3 在 Intranet 网站上显示图形 我正在使用将图形保存到字典并使用 mpld3 js 在客户端渲染它的选项 除非我想使用注释 否则该图呈现良好 这些显然是抵消的 我不明白为什么 因为即使我将偏移量设置为 0 0
  • Django migrate:不创建表

    经过一些错误后 我删除了数据库 删除了所有迁移文件 我留下了init py 现在 当我跑步时 python migrate py makemigrations It creates migrations correctly python m

随机推荐

  • 日期时间类型转换器

    我有下面的代码将字符串转换为 T 类型 它适用于所有其他类型 但当 T 为 DateTime 类型时会出现错误 TypeConverter c TypeDescriptor GetConverter typeof T return T c
  • Avro 架构和生成的文件中的十进制数据类型支持

    这个问题涉及 Avro 版本 1 8 1 我们的 AVRO 模式中有以下字段 name sale price type bytes null logicalType decimal precision 18 scale 17 如您所见 该字
  • scalaz 中的 Store 是什么

    我试图理解Lenses in scalaz 令人惊讶的是没有找到类似的东西cats core 我遇到了所谓的Store这是一个类型别名 type StoreT F A B IndexedStoreT F A A B type Indexed
  • 如何在 Cython 中传递指向 c 函数的指针?

    我正在尝试打电话qsort在 Cython 中使用自定义比较函数 但我不明白如何传递函数引用 首先 我有一个结构 cdef struct Pair int i j float h 比较函数排序依据h cdef int compare con
  • javascript旋转数组元素[重复]

    这个问题在这里已经有答案了 大家好 我有一个任务 我有一个数组 4 7 3 6 9 我必须创建一个像这样的数组 4 7 3 6 9 9 4 7 3 6 6 9 4 7 3 3 6 9 4 7 7 3 6 9 4 我必须编写一个程序 其中数组
  • AspectJ 加载时间编织不适用于 Spring beans

    我正在开发一个项目 该项目使用 Spring 配置的 Java 而不是 xml 风格来连接依赖项 它还具有分析逻辑 应通过 AspectJ 将其编织到所需的方法上 通过注释 设置正在运行 我可以看到我想要的包中的类正在编织 并且分析信息已从
  • 一个目录下可以有两个oozieworkflow.xml文件吗?

    一个目录下可以有两个oozieworkflow xml文件吗 如果是这样 我如何指示 oozie runner 运行哪一个 您可以有两个工作流程文件 只需为它们指定唯一的名称 然后您可以通过设置oozie wf application pa
  • Qt for Android:无法签署应用程序的发布版本

    我正在使用 Qt 5 13 和 Qt Creator 4 9 2 我可以成功构建 Android 应用程序的调试版本 但是当我尝试编译发布版本时 我得到 16 57 35 过程 opt Qt 5 13 0 android armv7 bin
  • iOS Voice Over 和 Android 无法播报 Span 标签中的文本

    我们希望屏幕阅读器在节点关闭后宣布 项目已关闭 有趣的是 Chrome 上的 NVDA 正确地播报了该消息 而 Android 和 iOS Voice Over 则未能播报此消息 这是打字稿代码 HostListener keydown t
  • 在 Scala / Spark 中将纪元转换为日期时间

    我使用以下方法将表示 DateTime 的 String 转换为 unix time 纪元 def strToTime x String Long DateTimeFormat forPattern YYYY MM dd HH mm ss
  • Spacy 中的自定义句子分割

    I want spaCy使用我提供的句子分割边界而不是它自己的处理 例如 get sentences Bob meets Alice SentBoundary They play together gt Bob meets Alice Th
  • JDK 1.6.x G1 的经验(“垃圾优先”)

    我想知道最新JDK中G1垃圾收集器的体验如何 我懂了NullPointerException尽管代码没有改变并且在早期的 JDK 中表现正常 但我的程序中抛出了这个问题 垃圾收集器只会影响表现您的应用程序 而不是它的正确性 我一直在 Ecl
  • Python中的非阻塞套接字?

    是我 还是我找不到关于Python中非阻塞套接字的好教程 我不确定如何准确地工作 recv和 send在里面 根据 python 文档 至少是我的理解 recv ed or send ed 数据可能只是部分数据 那么这是否意味着我必须以某种
  • 数组对象内相同值的重复分组

    id year 2017 month 4 Confirm 0 id year 2017 month 4 Expired 25 id year 2017 month 4 Pending 390 id year 2017 month 5 Pen
  • 构建启用 COM 互操作的项目,而无需在构建过程中注册它

    在 Visual Studio 2010 中 我尝试构建一个启用 COM 互操作的 C 项目 但在构建过程中不注册它 但我DO需要程序集的类型库 tlb 文件 因此我可以从解决方案中的另一个 C 项目导入它 我还没有找到一种方法来做到这一点
  • KafkaStreams 同一应用程序中的多个流

    我正在尝试根据 KafkaStreams 的惯例和合理性做出实用的设计决策 假设我想将两个不同的事件放入其中KTables 我有一个制作人将这些消息发送给KStream那就是听那个话题 据我所知 我不能对消息使用条件转发KafkaStrea
  • 如何将函数应用于嵌套列表?

    我需要获取嵌套列表中变量的最大值 对于某个站号 s 和某个成员 m mylist s m 其形式为 station date time member bias 6019 2011 08 06 12 00 mbr003 86 6019 201
  • URLError:

    只是想让这段代码直接运行它的基本代码Python 金融 import datetime import matplotlib pyplot as plt from matplotlib finance import quotes histor
  • 复制/粘贴到 Word 时如何保留 rstudio 的格式?

    我想在 Word 2010 中重现我的代码 脚本是用 rstudio 编写的 我想在粘贴到 Word 时保留 rstudio 的格式 主要是 我喜欢 rstudio 使用的字体颜色和间距 我发现当我从 SAS 粘贴到 Word 时 格式会被
  • 如何为pandas数据框中的不同组分配唯一的ID?

    如何根据特定条件为 pandas 数据框中创建的组分配唯一 ID 例如 我有一个名为 df 的数据框 其结构如下 名称标识用户 日期时间标识用户访问资源的日期 时间 Name Datetime Bob 26 04 2018 12 00 00