Часовая серия к матрице в пандах - PullRequest
1 голос
/ 19 июня 2019

Я хочу преобразовать почасовой Pandas Series в DataFrame как DataFrame, индексированный только с датой, а каждый час - в виде столбца.

Например, допустим, у меня есть эта серия:

YEAR = 2017
serie = pd.Series(pd.date_range(
        start=f'{YEAR}-01-01', end=f'{YEAR}-12-31 23:00:00', freq='H'))

Но я хочу это как:

                             h01      h02      h03     h04     h05  ...
Date
2017-01-01                   data    data     data     data   data  ...

1 Ответ

2 голосов
/ 19 июня 2019

Я полагаю, что ваш Series соответствует DatetimeIndex и заполнен некоторыми данными.

Тогда нужно DataFrame.pivot с DataFrame.assign для новых столбцов, созданных DatetimeIndex.date и DatetimeIndex.strftime и Series.to_frame для одного столбца DataFrame:

YEAR = 2017
serie = pd.Series(np.arange(8760), pd.date_range(
        start=f'{YEAR}-01-01', end=f'{YEAR}-12-31 23:00:00', freq='H'))

df = serie.to_frame('vals').assign(date = lambda x: x.index.date,
                                   hour = lambda x: x.index.strftime('h%H'))
#print (df)


df1 = df.pivot('date','hour','vals')
#print (df1)

Другое решение:

serie.index = [serie.index.date, serie.index.strftime('h%H')]
df1 = serie.unstack()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...