расчет продолжительности события в пандах - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь сослаться на этот SO post , где в первом ответе кто-то создает некоторый код для анализа данных временного ряда о падении дождя и суммирования в часах для каждого события дождя.Я хочу сделать нечто подобное, за исключением суммирования того, как часто насос работает (событие) в часах каждый день из данных временных рядов.С моей стороны нет необходимости суммировать что-либо еще, только продолжительность события.

#read CSV file
df = pd.read_csv('C:\\Users\\desktop\\data.csv', index_col='Date', parse_dates=True)

# Converting the index as date
df.index = pd.to_datetime(df.index)

df

Мои данные выглядят так:

                    ChWaterPrs
Date                                                                    
1/0/00 12:45 AM          0.0
1/0/00 12:50 AM          0.0
1/0/00 12:55 AM          0.0
1/0/00 12:00 AM          0.0
1/0/00 1:05 AM           0.0

Я знаю, что насос работает каждый разdf['ChWaterPrs'] больше 5, поэтому я пытаюсь построить эти вспомогательные столбцы, как упомянуто в посте SO:

# create helper columns, a block would be anytime value is > 5
df['block'] = df['ChWaterPrs'] >= 5
df['day'] = df.index.normalize()

# group by day to get unique block count and value count
session_map = df[df['ChWaterPrs'].astype(bool)].groupby('day')['block'].nunique()
hour_map = df[df['ChWaterPrs'].astype(bool)].groupby('day')['ChWaterPrs'].count()

# map to original dataframe
df['sessions'] = df['day'].map(session_map)
df['hours'] = df['day'].map(hour_map)

# calculate result
res = df.groupby(['day', 'hours', 'sessions'], as_index=False)['ChWaterPrs'].sum()
res['duration'] = res['hours'] / res['sessions']
res['amount'] = res['ChWaterPrs'] / res['sessions']

Но если я напечатаю res, то что-то напортачит ... Продолжительностьне имеет смысла, что они больше, чем 24 часа в сутки.По сути, единственная информация, которую я хотел бы получить, - это resample данных временного ряда о том, сколько hours что насос работал, что определяется как df['ChWaterPrs'] больше 5. Я думаю, что данные будут отображаться каждый день (сеанс), где df['ChWaterPrs'] будет ноль или больше 5 при запуске.Любые советы помогут спасибо.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...