Pandas-Numpy-Itertools ///如何获取DataFrame中每行的序列数?

问题描述 投票:0回答:1
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
python pandas numpy count itertools
1个回答
0
投票

这是一个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,则只需屏蔽结果。

© www.soinside.com 2019 - 2024. All rights reserved.