我有一个事件列表。每个案例(案例ID)最终将经历事件(事件A、事件B)。我有包含相应事件的时间戳的列。我试图找到事件A和事件B之间的日子,基于下面使用Python。然而,有些情况下,通过事件一个以上的时间,我需要的时间间隔是基于最新的日期。在以下示例中,案例ID 1的最新日期为1/20/23,忽略此案例ID的事件A的前两次发生。
|案例ID|活动|日期|------------------|1|一个|1/1/23||1|一个|1/3/23||1|一个|1/20/23||1| B| 2/1/23||8|一个|1/2/23||100|一个|3/1/23||100| B| 3/2/23||35|一个|2/13/23||35| B| 2/27/23||6|一个|2/14/23||33|一个|2/26/23||2|一个|3/4/23||2| B| 4/30/23|
我尝试过按重复排序,但我使用Python不像使用SQL那样舒服,而且我无法使用SQL。还试图避免手动删除重复项。我期望的输出看起来像下面这样:|案例ID| busdaysbweventAB|
5条答案
按热度按时间arknldoa1#
您可以用途:
输出:
kx1ctssn2#
您的输入数据采用管道分隔的CSV文件的形式。它非常简单,因此不需要任何模块导入来处理它。
构建一个以CaseID为键的字典。每个关联的值都应该是一个字典,可以同时包含“A”和“B”键。日期应该在与这些键关联的列表中。
您需要解析日期以找到最大值(最近的),然后做一些算术运算。
给定输入文件foo.csv,其中包含以下内容:
代码可能看起来像这样:
输出:
gpnt7bae3#
假设数据如所示(即caseID值和DATE排序-否则您可以在进一步处理之前排序),然后首先将CSV数据读入pandas DataFrame;然后用途:
这导致:
goqiplq24#
另一种方法是按事件和ID分组,获得最大日期,再次按ID分组,并使用apply获得日期之间的差异。
输出:
uemypmqf5#