【问题标题】:How can I count the number of cycles in a column with cyclic values?如何计算具有循环值的列中的循环数?
【发布时间】:2018-12-27 22:37:33
【问题描述】:

我有这个数据框:

import pandas as pd
data = {'c': [1,2,1,2,3,2,3], 'b': [5,6,4,5,5,6,4]}
df = pd.DataFrame(data = data)

我想用c的周期数创建列N

   b  c  N
0  5  1  1
1  6  2  1
2  4  1  2
3  5  2  2
4  5  3  2
5  6  2  3
6  4  3  3

我该怎么做?

【问题讨论】:

  • 你如何定义“周期”?
  • 称它为“循环”可能不合适,但N列中的值表明了这一点。
  • 这就是我的全部观点,我不明白 N 应该是什么,我要求澄清
  • 我认为更准确的描述可能是“我想标记不断增加的序列”
  • 示例虽然很有帮助,但仍可能模棱两可。例如,假设您有 [1, 2, 2]。第二个 2 是否开始一个新的循环(因为它不大于前一个值)或不(因为它不小于前一个值)?等等。

标签: python pandas


【解决方案1】:

您可以使用 shift 来查看 c 是否停止增加:

(df.c < df.c.shift()).cumsum().add(1)

0    1
1    1
2    2
3    2
4    2
5    3
6    3
Name: c, dtype: int32

【讨论】:

    【解决方案2】:

    使用diffcumsum

    (df.c.diff() <0).cumsum()
    
    0    0
    1    0
    2    1
    3    1
    4    1
    5    2
    6    2
    

    如果需要,加1

    (df.c.diff() <0).cumsum() + 1
    0    1
    1    1
    2    2
    3    2
    4    2
    5    3
    6    3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2016-12-24
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 2021-06-25
      相关资源
      最近更新 更多