当前位置: 首页 > 面试题库 >

如何使用pandas在时间序列中查找连续的相同数据

家西岭
2023-03-14
问题内容

这是一个像这样的时间序列数据,称为df:

      'No'       'Date'       'Value'
0     600000     1999-11-10    1
1     600000     1999-11-11    1
2     600000     1999-11-12    1
3     600000     1999-11-15    1
4     600000     1999-11-16    1
5     600000     1999-11-17    1
6     600000     1999-11-18    0
7     600000     1999-11-19    1
8     600000     1999-11-22    1
9     600000     1999-11-23    1
10    600000     1999-11-24    1
11    600000     1999-11-25    0
12    600001     1999-11-26    1
13    600001     1999-11-29    1
14    600001     1999-11-30    0

我想获取连续“值”为1的日期范围,因此如何获得最终结果,如下所示:

   'No'     'BeginDate'    'EndDate'   'Consecutive'
0 600000    1999-11-10    1999-11-17    6
1 600000    1999-11-19    1999-11-24    4
2 600001    1999-11-26    1999-11-29    2

问题答案:

这应该做

df['value_grp'] = (df.Values.diff(1) != 0).astype('int').cumsum()

每当Value更改时,value_grp将增加1。在下面,您可以提取分组结果

pd.DataFrame({'BeginDate' : df.groupby('value_grp').Date.first(), 
              'EndDate' : df.groupby('value_grp').Date.last(),
              'Consecutive' : df.groupby('value_grp').size(), 
              'No' : df.groupby('value_grp').No.first()}).reset_index(drop=True)


 类似资料:
  • 我有一个任务,从用户那里得到一个数字输入,例如:“57779227”,我需要返回相同数字的最长序列。在本例中,最长的序列是“777”,返回值应该是3(因为数字“7”在一行中的倍数)。 到目前为止,我写了一个迭代方法***此方法中不使用循环,只使用递归*** 迭代示例:

  • 我试图在Oracle 11g中运行一个sql查询,它将下面给定的数据集转换为下一个数据集。 这样做的逻辑是start date1和end date1将是连续的。另外start_date2和end date2需要是连续的。如果在某些时候end date2与下一个start date2不匹配,那么需要添加一个具有相同id并且具有enddate2作为下一个start date1的新行。 非常感谢您的帮助

  • 问题内容: 如果我有串,我要检查,如果它作为一个连续存在 串 中,我可以使用: 在非连续子 序列 的情况下,我可以使用什么?例: 问题答案: 我不知道是否有内置功能,但是手动操作相当简单

  • 我有一个时间序列数据,我试图在其中找到在特定时间间隔内按顺序排列的连续记录,按每个连续记录系列分组。例如,如果每个集合(组)的记录之间的时间间隔为5分钟,则任何在5分钟内的记录下一条记录都将在集合中,任何超过5分钟的记录都将结束集合(组)。一个新的集合(组)将在5分钟内从接下来的两个记录中出现。 **分钟分隔不在表中,在查询中计算 我可以按顺序找到2行之间的差异并提取它们,但我不确定如何提取一系列

  • 但还是没有运气 它工作时没有参数,所以它不是完全错误的,但我在这里遗漏了一些东西。

  • 问题内容: 我正在尝试使用蒙特卡洛算法查找下周的乐透数字包含连续数字的概率。我认为对数字进行排序可能会使实际查找连续项更加容易,但是在网上搜索了很多之后,似乎并没有什么真正可以帮助我寻找所需内容的信息 到目前为止,这就是我所知道的,我知道我将使用计数器来查找百万结果中的连续数,但实际上我只是为如何真正找到连续数而烦恼 问题答案: 首先我读错了问题,对不起,答案很抱歉! 好吧,让我们分手吧。那么首先