Индекс даты и времени Python Pandas создает фрейм данных - PullRequest
0 голосов
/ 11 октября 2018

У меня есть данные временных рядов, в которых я пытаюсь создать отдельные кадры данных в Пандах, которые будут иметь значение 0 или 1 в зависимости от того, является ли индекс конкретным днем ​​недели, а другой - конкретным временем.

Например, я могу создать некоторые данные с помощью:

import pandas as pd
import numpy as np
from numpy.random import randint

#time = pd.date_range('6/28/2013', periods=2000, freq='5min')
#df = pd.Series(np.random.randint(100, size=2000), index=time)

rng = pd.date_range('10/9/2018 00:00', periods=5, freq='6H')
df = pd.DataFrame({'Random_Number':randint(1, 10, 5)}, index=rng)
df.head()

И если я делаю это правильно, я могу создать фрейм данных с именем Tuesday, который будет 1, если день = вторник, иначе0

#The day of the week with Monday=0, Sunday=6
df['Tuesday'] = np.where(df.index.dayofweek == 1, 1, 0)

df.head()

С чем я борюсь (в Excel я могу делать со встроенными операторами if else) создание кадра данных с именем occupied, если время находится между 7:00 и 17:00.Любые советы помогут, спасибо заранее!

df['Occupied'] = np.where(df.index.hour > 7 & df.index.hour < 17, 1, 0)

df.head()

Этот код ошибки с ошибкой типа, что я не уверен, что делать:

TypeError: unsupported operand type(s) for &: 'int' and 'Int64Index'

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вы можете использовать pd.DataFrame.eval:

df['Occupied'] = df.eval('7 <= index.dt.hour < 17').astype(int)

print(df)

                     Random_Number  Occupied
2018-10-09 00:00:00              8         0
2018-10-09 06:00:00              8         0
2018-10-09 12:00:00              8         1
2018-10-09 18:00:00              3         0
2018-10-10 00:00:00              2         0
0 голосов
/ 11 октября 2018

Вам не хватает ()

np.where((df.index.hour > 7) & (df.index.hour < 17), 1, 0)
Out[157]: array([0, 0, 1, 0, 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...