Pandas 在列中查找连续非负数的块

Pandas 在列中查找连续非负数的块,pandas,python-3.5,Pandas,Python 3.5,我有一个如下所示的数据框: DateTime Rev 8/9/2019 4:00 -1976 8/9/2019 6:00 -1953 8/9/2019 7:00 -1838 8/9/2019 8:00 0 8/9/2019 11:00 0 8/9/2019 12:00 0 8/9/2019 13:00 -1945 8/9/2019 14:00 -2045 8/9/2019 15:00 -1976 8/9/2019 16:00 0 8/9/2019

我有一个如下所示的数据框:

DateTime        Rev
8/9/2019 4:00   -1976
8/9/2019 6:00   -1953
8/9/2019 7:00   -1838
8/9/2019 8:00    0
8/9/2019 11:00   0
8/9/2019 12:00   0
8/9/2019 13:00  -1945
8/9/2019 14:00  -2045
8/9/2019 15:00  -1976
8/9/2019 16:00   0
8/9/2019 17:00   0
我想找到所有非零数据块的索引。i、 我需要从以上两个不同的数据帧中提取

DateTime        Rev
8/9/2019 4:00   -1976
8/9/2019 6:00   -1953
8/9/2019 7:00   -1838


我不知道如何有效地处理这个问题。

Ide正在为负conceutive值创建唯一的组,并在列表理解中创建
数据帧的列表:

m = df['Rev'].lt(0)
mask = m.ne(m.shift()).cumsum()[m]
dfs = [g for i, g in df.groupby(mask)]
print (dfs)
[        DateTime   Rev
0  8/9/2019 4:00 -1976
1  8/9/2019 6:00 -1953
2  8/9/2019 7:00 -1838,          DateTime   Rev
6  8/9/2019 13:00 -1945
7  8/9/2019 14:00 -2045
8  8/9/2019 15:00 -1976]

详细信息

print (mask)
0    1
1    1
2    1
6    3
7    3
8    3
Name: Rev, dtype: int32
检查组:

df['g'] = mask

print (df)
          DateTime   Rev    g
0    8/9/2019 4:00 -1976  1.0
1    8/9/2019 6:00 -1953  1.0
2    8/9/2019 7:00 -1838  1.0
3    8/9/2019 8:00     0  NaN
4   8/9/2019 11:00     0  NaN
5   8/9/2019 12:00     0  NaN
6   8/9/2019 13:00 -1945  3.0
7   8/9/2019 14:00 -2045  3.0
8   8/9/2019 15:00 -1976  3.0
9   8/9/2019 16:00     0  NaN
10  8/9/2019 17:00     0  NaN
print (mask)
0    1
1    1
2    1
6    3
7    3
8    3
Name: Rev, dtype: int32
df['g'] = mask

print (df)
          DateTime   Rev    g
0    8/9/2019 4:00 -1976  1.0
1    8/9/2019 6:00 -1953  1.0
2    8/9/2019 7:00 -1838  1.0
3    8/9/2019 8:00     0  NaN
4   8/9/2019 11:00     0  NaN
5   8/9/2019 12:00     0  NaN
6   8/9/2019 13:00 -1945  3.0
7   8/9/2019 14:00 -2045  3.0
8   8/9/2019 15:00 -1976  3.0
9   8/9/2019 16:00     0  NaN
10  8/9/2019 17:00     0  NaN