当前位置: 首页 > 知识库问答 >
问题:

发现熊猫数量最长的连续增长

陶温书
2023-03-14

我有一个数据帧:

Date    Price
2021-01-01 29344.67
2021-01-02 32072.08
2021-01-03 33048.03
2021-01-04 32084.61
2021-01-05 34105.46
2021-01-06 36910.18
2021-01-07 39505.51
2021-01-08 40809.93
2021-01-09 40397.52
2021-01-10 38505.49

Date      object
Price    float64
dtype: object

而我的目标是找到最长的连续增长期。它应该返回:最长的连续时期是2021-01-04年到2021-01-08年,增加了8725.32美元老实说,我不知道从哪里开始。这些是我在熊猫的第一步,我不知道我应该使用哪些工具来获得这些信息。

有谁能帮我/给我指明正确的方向吗?

共有1个答案

韩羽
2023-03-14

用cumsum在递减时检测递增序列:

df['is_increasing'] = df['Price'].diff().lt(0).cumsum()

您将得到:

         Date     Price  is_increasing
0  2021-01-01  29344.67             0
1  2021-01-02  32072.08             0
2  2021-01-03  33048.03             0
3  2021-01-04  32084.61             1
4  2021-01-05  34105.46             1
5  2021-01-06  36910.18             1
6  2021-01-07  39505.51             1
7  2021-01-08  40809.93             1
8  2021-01-09  40397.52             2
9  2021-01-10  38505.49             3

现在,您可以使用

sizes=df.groupby('is_increasing')['Price'].transform('size')
df[sizes == sizes.max()]

你会得到:

         Date     Price  is_increasing
3  2021-01-04  32084.61              1
4  2021-01-05  34105.46              1
5  2021-01-06  36910.18              1
6  2021-01-07  39505.51              1
7  2021-01-08  40809.93              1
 类似资料:
  • 问题内容: 对于这个例子说,我有两个字段的表,和。 该表具有以下数据 我想回来 我想返回的结果是每个区域递增连续值的最长长度。对于。 我将如何在MS Sql 2005上执行此操作? 问题答案: 一种方法是使用遍历每一行的递归CTE。如果该行符合条件(增加同一区域的订单号),则将链长增加一。如果没有,则启动一个新链: SQL Fiddle的实时示例。 另一种方法是使用查询查找“中断”,即以相同区域的

  • 本文向大家介绍JavaScript实现列出数组中最长的连续数,包括了JavaScript实现列出数组中最长的连续数的使用技巧和注意事项,需要的朋友参考一下 原始题目: 给定一个无序的整数序列, 找最长的连续数字序列。 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]。 小菜给出的解法:   调用说明:      方法名称:         

  • 问题内容: 我有一个pandas.DataFrame,它在连续的时间点进行了测量。与每次测量一起,被观察系统在每个时间点都有不同的状态。因此,DataFrame还包含一列,其中包含每次测量时系统的状态。状态更改比测量间隔慢得多。结果,指示状态的列可能看起来像这样(索引:状态): 是否有一种简单的方法来检索连续相等状态的每个段的索引。那意味着我想得到这样的东西: 结果也可能与普通列表有所不同。 到目

  • 我为这个问题写了一个方法:输入:整数数组返回:最长连续整数序列的长度。like:对于{9,1,2,3},返回3,因为{1,2,3} 这个方法运行得不好。希望有人能帮我调试。 非常感谢!!!

  • 问题内容: 我有一个包含屏幕名称,tweet,收藏夹等的Pandas DataFrame。我想找到“ favcount”(我已经做过)的最大值,并返回该“ tweet”的屏幕名称 我似乎找不到任何东西,任何人都可以帮助我朝正确的方向发展吗? 问题答案: 使用 来获取最大价值的指标。那你可以用 编辑: 现已弃用,切换为

  • 问题内容: 假设我在numpy数组中有一堆数字,并且根据返回布尔数组的条件对它们进行了测试: 并使用此布尔数组,我想计算True连续出现的所有长度。例如,如果我有,我想回去。 我可以使用以下代码来做到这一点: 但是是否已经为此或python,numpy,scipy等函数实现了任何功能,该函数计算给定输入在列表或数组中连续出现的长度? 问题答案: 这是使用的解决方案(可能不是最快的解决方案):