1

我在数据框中有一列“状态”,它具有以下值:

increase
increase
increase
increase
decline
decline
decline
increase
increase
decline

我需要制作每次“状态”列中的值从下降变为增加时都会改变的计数器。它应该如下所示:

"status"          "counter"
increase          1
increase          1
increase          1
increase          1
decline           2
decline           2
decline           2
increase          3
increase          3
decline           4

在 python 中做这件事的合适方法是什么?

4

1 回答 1

2

您可以创建一个布尔值,然后只应用一个累积和。

df['counter'] = df['status'].ne(df['status'].shift()).cumsum() 

  status  counter
0  increase        1
1  increase        1
2  increase        1
3  increase        1
4   decline        2
5   decline        2
6   decline        2
7  increase        3
8  increase        3
9   decline        4

​</p>

于 2021-01-19T09:29:15.053 回答