如何计算具有循环值的列中的循环数?

时间:2018-07-19 17:23:06

标签: python pandas

我有这个DataFrame:

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)

并且我想创建循环数为N的列c

   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

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用 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

答案 1 :(得分: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