如何在pandas DataFrame值列中查找连续的最高计数(数字|递增|递减)

瑞安·亨特(Ryan Hunt)

如何在同一列中找到连续出现的最高计数,例如相同数目,增加值或减少值。

所以给这样的东西:

            h_diff  l_diff  monotonic
timestamp                            
2000-01-18     NaN     NaN        NaN
2000-01-19    2.75    2.93        1.0
2000-01-20   12.75   10.13        1.0
2000-01-21   -7.25   -3.31        0.0
2000-01-24   -1.50   -5.07        0.0
2000-01-25    0.37   -2.75        1.0
2000-01-26    1.07    7.38        1.0
2000-01-27   -1.19   -2.75        0.0
2000-01-28   -2.13   -6.38        0.0
2000-01-31   -7.00   -6.12        0.0

h_diff中正值的单调性最高值为2,负值中的单调性最高值为3。所以给定滚动10或n,我如何找到最高的单调计数,同时仍然能够动态更改窗口大小?

这给我单调列的1.0值:lambda x:np.all(np.diff(x)> 0)和lambda x:np.count_nonzero(np.diff(x)> 0)将计算的总计数1.0的窗口,但我想找到的是给定窗口系列中运行时间最长的窗口。


我希望是这样的:

           h_diff  l_diff  monotonic
timestamp                            
2000-01-18     NaN     NaN        NaN
2000-01-19    2.75    2.93        1.0
2000-01-20   12.75   10.13        2.0
2000-01-21   -7.25   -3.31        0.0
2000-01-24   -1.50   -5.07        0.0
2000-01-25    0.37   -2.75        1.0
2000-01-26    1.07    7.38        2.0
2000-01-27    1.19   -2.75        3.0
2000-01-28    2.13   -6.38        4.0
2000-01-31   -7.00   -6.12        0.0
安塞夫

使用GroupBy.cumcount+ Series.where

初始数据框

            h_diff  l_diff
timestamp                 
2000-01-18     NaN     NaN
2000-01-19    2.75    2.93
2000-01-20   12.75   10.13
2000-01-21   -7.25   -3.31
2000-01-24   -1.50   -5.07
2000-01-25    0.37   -2.75
2000-01-26    1.07    7.38
2000-01-27    1.19   -2.75
2000-01-28    2.13   -6.38
2000-01-31   -7.00   -6.12

h = df['h_diff'].gt(0)
#h = np.sign(df['h_diff'])
df['monotonic_h']=h.groupby(h.ne(h.shift()).cumsum()).cumcount().add(1).where(h,0)
print(df)
            h_diff  l_diff  monotonic_h
timestamp                             
2000-01-18     NaN     NaN            0
2000-01-19    2.75    2.93            1
2000-01-20   12.75   10.13            2
2000-01-21   -7.25   -3.31            0
2000-01-24   -1.50   -5.07            0
2000-01-25    0.37   -2.75            1
2000-01-26    1.07    7.38            2
2000-01-27    1.19   -2.75            3
2000-01-28    2.13   -6.38            4
2000-01-31   -7.00   -6.12            0

df['monotonic_h'].max()
#4

详情

h.ne(h.shift()).cumsum()

timestamp
2000-01-18    1
2000-01-19    2
2000-01-20    2
2000-01-21    3
2000-01-24    3
2000-01-25    4
2000-01-26    4
2000-01-27    4
2000-01-28    4
2000-01-31    5
Name: h_diff, dtype: int64

更新

df = df.join( h.groupby(h.ne(h.shift()).cumsum()).cumcount().add(1)
               .to_frame('values')
               .assign(monotic = np.where(h,'monotic_h_greater_0',
                                          'monotic_h_not_greater_0'),
                       index = lambda x: x.index)
               .where(df['h_diff'].notna())
               .pivot_table(columns = 'monotic',
                            index = 'index',
                            values = 'values',
                            fill_value=0) )

print(df)
            h_diff  l_diff  monotic_h_greater_0  monotic_h_not_greater_0
timestamp                                                               
2000-01-18     NaN     NaN                  NaN                      NaN
2000-01-19    2.75    2.93                  1.0                      0.0
2000-01-20   12.75   10.13                  2.0                      0.0
2000-01-21   -7.25   -3.31                  0.0                      1.0
2000-01-24   -1.50   -5.07                  0.0                      2.0
2000-01-25    0.37   -2.75                  1.0                      0.0
2000-01-26    1.07    7.38                  2.0                      0.0
2000-01-27    1.19   -2.75                  3.0                      0.0
2000-01-28    2.13   -6.38                  4.0                      0.0
2000-01-31   -7.00   -6.12                  0.0                      1.0 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在列中查找连续值

来自分类Dev

如何在Pandas Dataframe中迭代计数

来自分类Dev

如何选择连续的最高数字,并自动将其与同一列中的值相乘?

来自分类Dev

如何连续递增然后递减?

来自分类Dev

如何在sql中获取列值的连续出现计数?

来自分类Dev

如何在列中的值上标注升序连续数字?

来自分类Dev

如何在Pandas DATAFRAME中查找具有特定数据类型的列值的行

来自分类Dev

如何在 Pandas 中填充递增的整数

来自分类Dev

如何在Python Pandas的dataframe列中替换多个值?

来自分类Dev

如何在Pandas DataFrame中检查列值的类型

来自分类Dev

如何在 Pandas 中返回值的计数

来自分类Dev

如何在Pandas DataFrame中查找非独占数据的长度

来自分类Dev

如何在Excel电子表格列中查找连续数字的特定数据

来自分类Dev

如何在Pandas数据框中查找值

来自分类Dev

如何在Pandas中重塑或旋转DataFrame

来自分类Dev

如何在Pandas Python中创建DataFrame

来自分类Dev

如何在 Pandas DataFrame 中添加条目?

来自分类Dev

如何在 Pandas DataFrame 中减去时间

来自分类Dev

如何在Python DataFrame列中查找值?

来自分类Dev

如何在Pandas DataFrame中生成缺少值的列的列表

来自分类Dev

如何在Pandas中向下转换数字列?

来自分类Dev

如何在 Pandas 对象中组合列?

来自分类Dev

如何在Python Pandas中对具有计数唯一值的多列进行分组

来自分类Dev

如何在Word 2007的表格列中自动递增数字

来自分类Dev

如何在pandas DataFrame中的某些值之间填充Nans?

来自分类Dev

如何在MultiIndex Pandas DataFrame中设置索引值?

来自分类Dev

在pandas列中,如何查找出现特定值的最大连续行数?

来自分类Dev

如何在Pandas DataFrame列中解开连字符分隔的数字范围?

来自分类Dev

如何在Pandas DataFrame中按列设置dtypes

Related 相关文章

  1. 1

    如何在列中查找连续值

  2. 2

    如何在Pandas Dataframe中迭代计数

  3. 3

    如何选择连续的最高数字,并自动将其与同一列中的值相乘?

  4. 4

    如何连续递增然后递减?

  5. 5

    如何在sql中获取列值的连续出现计数?

  6. 6

    如何在列中的值上标注升序连续数字?

  7. 7

    如何在Pandas DATAFRAME中查找具有特定数据类型的列值的行

  8. 8

    如何在 Pandas 中填充递增的整数

  9. 9

    如何在Python Pandas的dataframe列中替换多个值?

  10. 10

    如何在Pandas DataFrame中检查列值的类型

  11. 11

    如何在 Pandas 中返回值的计数

  12. 12

    如何在Pandas DataFrame中查找非独占数据的长度

  13. 13

    如何在Excel电子表格列中查找连续数字的特定数据

  14. 14

    如何在Pandas数据框中查找值

  15. 15

    如何在Pandas中重塑或旋转DataFrame

  16. 16

    如何在Pandas Python中创建DataFrame

  17. 17

    如何在 Pandas DataFrame 中添加条目?

  18. 18

    如何在 Pandas DataFrame 中减去时间

  19. 19

    如何在Python DataFrame列中查找值?

  20. 20

    如何在Pandas DataFrame中生成缺少值的列的列表

  21. 21

    如何在Pandas中向下转换数字列?

  22. 22

    如何在 Pandas 对象中组合列?

  23. 23

    如何在Python Pandas中对具有计数唯一值的多列进行分组

  24. 24

    如何在Word 2007的表格列中自动递增数字

  25. 25

    如何在pandas DataFrame中的某些值之间填充Nans?

  26. 26

    如何在MultiIndex Pandas DataFrame中设置索引值?

  27. 27

    在pandas列中,如何查找出现特定值的最大连续行数?

  28. 28

    如何在Pandas DataFrame列中解开连字符分隔的数字范围?

  29. 29

    如何在Pandas DataFrame中按列设置dtypes

热门标签

归档