Объединить все столбцы данных в один столбец - PullRequest
2 голосов
/ 22 мая 2019

У меня есть датафрейм, который выглядит примерно так:

        01/01/19 02/01/19 03/01/19 04/01/19
hour                                                                           
1.0     27.08    47.73    54.24    10.0 
2.0     26.06    49.53    46.09    22.0
...
24.0    12.0     34.0     22.0     40.0

Я хотел бы уменьшить его размерность до одного столбца с надлежащим индексом даты, объединяющим все столбцы. Есть ли умные панды способ сделать это?

Ожидаемый результат ... что-то вроде:

01/01/19 00:00:00   27.08
01/01/19 01:00:00   26.08
...
01/01/19 23:00:00   12.00
02/01/19 00:00:00   47.73
02/01/19 01:00:00   49.53
...
02/01/19 23:00:00   34.00
...

1 Ответ

6 голосов
/ 22 мая 2019

Вы можете сложить и затем исправить индекс, используя pd.to_datetime и pd.to_timedelta:

u = df.stack()  
u.index = (pd.to_datetime(u.index.get_level_values(1), dayfirst=True) 
         + pd.to_timedelta(u.index.get_level_values(0) - 1, unit='h'))

u.sort_index()

2019-01-01 00:00:00    27.08
2019-01-01 01:00:00    26.06
2019-01-01 23:00:00    12.00
2019-01-02 00:00:00    47.73
2019-01-02 01:00:00    49.53
2019-01-02 23:00:00    34.00
2019-01-03 00:00:00    54.24
2019-01-03 01:00:00    46.09
2019-01-03 23:00:00    22.00
2019-01-04 00:00:00    10.00
2019-01-04 01:00:00    22.00
2019-01-04 23:00:00    40.00
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...