Как вы изолируете строки в DataFrame, которые между двумя для оператора if? - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть фрейм данных с данными для каждого почасового периода в течение года, и я хотел бы создать новую строку с нулем во всех строках, которые находятся между 9:00 и 17:00, и в этой же строке добавитьданные из другой строки, если они не находятся в этом диапазоне времени

Я считаю, что я хочу что-то вроде;

if '9.00' >= final_df.index <= '17.00':
    do some action
else
    do another action

Это еще не работает, первая причина в том, что в данный момент отсутствует полная дата.Есть ли способ, которым я могу обойти это?Первая строка вроде работает, если я использую;

if '2017-10-16 9.00' >= final_df.index <= '2017-10-16 17.00':

Есть ли способ, которым я могу обойти это.

Для справки первые 5 точек данных;

                       A    B       C   D   E
Timestamp                   
2017-10-15 13:30:00 59.9    17.14   0   1   0
2017-10-15 14:30:00 64.3    17.22   0   1   0
2017-10-15 15:30:00 68.6    17.18   0   1   0
2017-10-15 16:30:00 77.6    17.08   0   1   0
2017-10-15 17:30:00 74.5    16.93   0   1   0

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете использовать DatetimeIndex.hour, чтобы создать маску, которую вы можете использовать на вашем DataFrame.Для ваших данных давайте просто скажем, что интересующая область находится между 15 и 17, и что вы хотите сложить A в регионе и B снаружи.Это можно сделать следующим образом:

In [100]: mask = (df.index.hour > 14) & (df.index.hour < 17)

In [101]: df[mask].A.sum()
Out[101]: 146.2

In [102]: df[~mask].B.sum()
Out[102]: 51.29

Редактировать: задача, которая теперь была добавлена ​​в вопрос, оказывается также легко решаемой с помощью этого подхода;предполагая, что интересующий столбец B:

In [117]: df['Result'] = ~mask * df.B

In [118]: df
Out[118]:
                        A      B  C  D  E  Result
Timestamp
2017-10-15 13:30:00  59.9  17.14  0  1  0   17.14
2017-10-15 14:30:00  64.3  17.22  0  1  0   17.22
2017-10-15 15:30:00  68.6  17.18  0  1  0    0.00
2017-10-15 16:30:00  77.6  17.08  0  1  0    0.00
2017-10-15 17:30:00  74.5  16.93  0  1  0   16.93
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...