Как поднастроить строку условия с некоторыми из N строк, прежде чем условие встретится, быстрее, чем мой код? - PullRequest
9 голосов
/ 15 мая 2019

Поскольку мой набор данных - это временной ряд, в котором у меня 30 разных фреймов данных, а каждый из фреймов данных содержит более 10000 строк.Я хочу изучить тенденцию до того, как значение температуры опустится ниже 40.

Итак, я хочу поднастроить строку, когда значение температуры ниже 40, и я также хочу поднастроить 24 строки, прежде чем значение станет ниже 40.

Я уже пробовал код, единственный работающий код ниже.Но для поднабора требуется больше времени (например, более 10 минут на один кадр данных).Итак, мой код плохой.Поэтому я хочу знать код на python, который может работать быстрее.Ребята, вы можете мне помочь?

df=temperature_df.copy()
drop_temperature_df=pd.DataFrame()

# get the index during drop temperature
drop_temperature_index=np.array(df[df[temperature]<40].index)

# subset the data frame for 24 hours before drop temperature
for i,index in enumerate(drop_temperature_index):
    drop_temperature_df=drop_temperature_df.append(df.loc[index-24:index,:])

K['K_{}'.format(string)]=drop_temperature_df.copy() #save the subset data frame

Так что, как и данные ниже, у меня точка температуры ниже 40 в 26.01.2008 0800 Итак, я хочу поднастроить точку ниже 40 с 24 рядами раньше (25.01.2008 0800 до 1/ 26/2018 0800).

enter image description here

1 Ответ

6 голосов
/ 15 мая 2019

Я думаю, что вы можете использовать ffill с limit и найти notnull index, вырезать фрейм данных

yourdf=df[df.temperature.where(df.temperature<40).bfill(limit=24).notnull()].copy()
...