对于pandas DataFrame中的循环和条件

时间:2018-02-22 17:55:32

标签: pandas loops for-loop dataframe conditional

我有这个DataFrame,我需要编写一个条件来仅提取已加星标的能量。

Energy  Time
0       80
0       82 
0       84
0       86
287**   88
287     90
287     91
287     92
0       94
0       96
0       98
302**   100
302     102
302     104
302     106
0       108
0       110 

当Energy(t)> 0& 0时,想法是接受能量值。能量(T-1)== 0。

我尝试创建for循环

set_time=set(df.loc[:,'Time'])
list_time=list(set_time)
for t, time in enumerate(list_time):
     if df['Energy'][t] > 0 & df['Energy'][t-1]==0:
        print(df['Energy'],t)

但我得到错误。非常感谢提前

1 个答案:

答案 0 :(得分:1)

有一种方法

v=df.eq(0).Energy.cumsum()

df.groupby(df.eq(0).Energy.cumsum()).head(2).loc[df.groupby(v).Energy.filter(lambda x : x.ne(0).any()).index].dropna()

Out[1538]: 
    Energy   Time
3      0.0   86.0
4    287.0   88.0
10     0.0   98.0
11   302.0  100.0