为了账号安全,请及时绑定邮箱和手机立即绑定

基于列枚举数据框

基于列枚举数据框

偶然的你 2021-09-14 15:53:50
我正在处理一个时间序列数据帧,它看起来像这样,除了超过数千行。我想创建一个新列,枚举具有相同“符号”值的行块。即第 0 行将是 0,第 1 行到第 23 行将是 1,第 24 行到第 30 行将是 2 等等......(时间顺序很重要)实现这一点的最pythonic 方法是什么?先感谢您    Date       sign0   2011-01-27  11   2011-01-28  -12   2011-01-31  -13   2011-02-01  -14   2011-02-02  -15   2011-02-07  -16   2011-02-08  -17   2011-02-09  -18   2011-02-10  -19   2011-02-11  -110  2011-02-14  -111  2011-02-15  -112  2011-02-16  -113  2011-02-17  -114  2011-02-18  -115  2011-02-21  -116  2011-02-22  -117  2011-02-23  -118  2011-02-24  -119  2011-02-25  -120  2011-02-28  -121  2011-03-01  -122  2011-03-02  -123  2011-03-03  -124  2011-03-04  125  2011-03-07  126  2011-03-08  127  2011-03-09  128  2011-03-10  129  2011-03-11  130  2011-03-14  131  2011-03-15  -132  2011-03-16  -133  2011-03-17  -134  2011-03-18  -135  2011-03-21  -136  2011-03-22  -137  2011-03-23  -138  2011-03-24  -139  2011-03-25  -140  2011-03-28  -141  2011-03-29  142  2011-03-30  1
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以使用以下方法获取cumsum符号更改的位置diff:


df['new_column'] = (df.sign.diff()!=0).cumsum()-1


>>> df

          Date  sign  new_column

0   2011-01-27     1      0

1   2011-01-28    -1      1

2   2011-01-31    -1      1

3   2011-02-01    -1      1

4   2011-02-02    -1      1

5   2011-02-07    -1      1

6   2011-02-08    -1      1

7   2011-02-09    -1      1

8   2011-02-10    -1      1

9   2011-02-11    -1      1

10  2011-02-14    -1      1

11  2011-02-15    -1      1

12  2011-02-16    -1      1

13  2011-02-17    -1      1

14  2011-02-18    -1      1

15  2011-02-21    -1      1

16  2011-02-22    -1      1

17  2011-02-23    -1      1

18  2011-02-24    -1      1

19  2011-02-25    -1      1

20  2011-02-28    -1      1

21  2011-03-01    -1      1

22  2011-03-02    -1      1

23  2011-03-03    -1      1

24  2011-03-04     1      2

25  2011-03-07     1      2

26  2011-03-08     1      2

27  2011-03-09     1      2

28  2011-03-10     1      2

29  2011-03-11     1      2

30  2011-03-14     1      2

31  2011-03-15    -1      3

32  2011-03-16    -1      3

33  2011-03-17    -1      3

34  2011-03-18    -1      3

35  2011-03-21    -1      3

36  2011-03-22    -1      3

37  2011-03-23    -1      3

38  2011-03-24    -1      3

39  2011-03-25    -1      3

40  2011-03-28    -1      3

41  2011-03-29     1      4

42  2011-03-30     1      4


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信