Часовая серия для Matrix в Pandas

Я хочу преобразовать почасовое 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 3 4 5?

jezrael 19.06.2019 08:49

Вероятно, 01:00:00 преобразуется в 1, 02:00:00 в 2 и так далее.

PV8 19.06.2019 08:50

Это просто данные. Я меняю их для возможных недоразумений.

Angelo 19.06.2019 09:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что ваш 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()

Другие вопросы по теме