2019-09-11 107.8295
2019-09-12 108.1060
2019-09-13 108.1035
2019-09-16 108.1375
2019-09-17 108.1145
2019-09-18 108.4525
2019-09-19 108.0365
2019-09-20 107.5630
2019-09-23 107.5450
2019-09-24 107.0780
==============================
具有上面的数据框(DF),我想在每一行中知道数字是否小于或等于最后一个日期,并对等于或小于或等于的天数序列求和。
x = np.where(df.close > df.shift(1).close, 1, -1)
df['seq'] = [sum(g) for b, g in itertools.groupby(x) if b][-1]
========================================
我的问题是只给了我最后一个序列。
在上述数据帧的情况下为-4
无论如何都需要获取每一行的计数,就像上面这样:
nan, 1, -1, 1, -1, 1, -1, -2, -3, -4
这是一个groupby连续值问题。
m = df['close'].gt(df['close'].shift()) * 2 - 1
m.groupby(m.ne(m.shift()).cumsum()).cumsum()
0 -1
1 1
2 -1
3 1
4 -1
5 1
6 -1
7 -2
8 -3
9 -4
Name: close, dtype: int32
如果要将第一个值设为nan
,则只需屏蔽结果。