Я бы хотел выяснить, как часто встречаются отрицательные значения и как долго эта отрицательная цена возникает.
пример df
d = {'value': [1,2,-3,-4,-5,6,7,8,-9,-10], 'period':[1,2,3,4,5,6,7,8,10]}
df = pd.DataFrame(data=d)
Я проверил, какие строки имеют отрицательные значения. df['value'] < 0
Я подумал, что мог бы просто перебрать каждую строку, сохранить счетчик для случая, когда возникает отрицательное значение и, возможно, переместить эту строку в другой df, как я хотел бы сохранить начало period
и конец period
.
Что я сейчас пытаюсь
def count_negatives(df):
df_negatives = pd.DataFrame(columns=['start','end', 'counter'])
for index, row in df.iterrows():
counter = 0
df_negative_index = 0
while(row['value'] < 0):
# if its the first one add it to df as start ?
# grab the last one and add it as end
#constantly overwrite the counter?
counter += 1
#add counter to df row
df_negatives['counter'] = counter
return df_negatives
За исключением того, что это дает мне бесконечный цикл, я думаю. Если я заменим while
на if
, я застрял, придя к способу отслеживать, как долго.