我对编码还很陌生,所以请耐心等待。我有一个 pandas df ,它具有连续的正值或负值序列或 0。
df =
x y
0 -5 25
1 -7 32
2 -3 33
3 0 22
4 1 16
5 6 10
6 3 36
7 0 22
8 0 55
9 -10 24
10 -9 32
11 -8 5
12 11 4
13 17 9
14 13 88
15 0 14
16 0 12
17 0 0
18 0 10
19 0 96
20 -1 492
21 -9 -440
22 -3 34
我想像这样分解这些数据:
data1 = [-5 -7 -3 0]
data2 = [1 6 3 0 0]
data3 = [-10 -9 -8]
data4 = [11 17 13 0 0 0 0 0]
data5 = [-1 -9 -3]
其中值 0 或任意数量的 0 与其前面的值一起放入仅负数或正数的集合中。
任何正确方向的帮助或指示将不胜感激。
最佳答案
我把它当作pandas
Series
#A=pd.Series(lst)
idx=A.index
A=A.loc[A!=0].to_frame('Val')
A['Group']=A.ge(0).astype(int).diff().ne(0).cumsum()
A=A.reindex(idx)
A.Val=A.Val.fillna(0).astype(int)
A.Group=A.Group.ffill()
A.groupby('Group').Val.apply(list).tolist()
[[-5, -7, -3, 0],
[1, 6, 3, 0, 0],
[-10, -9, -8],
[11, 17, 13, 0, 0, 0, 0, 0],
[-1, -9, -3]]
关于数据框A
A
Out[23]:
Val Group
0 -5 1.0
1 -7 1.0
2 -3 1.0
3 0 1.0
4 1 2.0
5 6 2.0
6 3 2.0
7 0 2.0
8 0 2.0
9 -10 3.0
10 -9 3.0
11 -8 3.0
12 11 4.0
13 17 4.0
14 13 4.0
15 0 4.0
16 0 4.0
17 0 4.0
18 0 4.0
19 0 4.0
20 -1 5.0
21 -9 5.0
22 -3 5.0
关于python - 将数据分成连续的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274268/