группа панд не использует для цикла (как сделать умный) - PullRequest
0 голосов
/ 02 декабря 2018

Предположим, у вас есть серия панд, подобная этой.

a = pd.Series(range(31),index = pd.date_range('2018-01-01','2018-01-31',freq='D'))

Если вы хотите создать групповой фрейм данных с мультииндексом, как этот

data date<br> 2018-01-01 2018-01-01 0 2018-01-02 1 2018-01-03 2 2018-01-04 3 2018-01-05 4 2018-01-02 2018-01-02 1 2018-01-03 2 2018-01-04 3 2018-01-05 4 2018-01-06 5 2018-01-03 2018-01-03 2 2018-01-04 3 2018-01-05 4 2018-01-06 5 2018-01-07 6 .....

Эти данные показывают, что в мультииндексе первого уровня он показывает исходный индекс даты и времени.И на втором уровне мы сократили дату на 5 дней.Например, если первый уровень - 2018-01-01, второй уровень - с 2018-01-01 по 2018-01-05.Если первый уровень - 2018-01-15, второй уровень - с 2018-01-15 по 2018-01-19, а данные - 14, 15, 16, 17, 18.

Как я могу сделать этот DataFrame илиСерия без какой-либо петли?

1 Ответ

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

Использование -

import datetime as dt
first = np.repeat(a.index.values,5)
second = [ i + np.timedelta64(j,'D') for i in a.index for j in range(5)]
arrays = [first, second]
print(np.shape(second))
d=pd.DataFrame(index=pd.MultiIndex.from_arrays(arrays, names=('date1', 'date2')))

Выход (d.head())

                       value
date1      date2            
2018-01-01 2018-01-01    0.0
           2018-01-02    1.0
           2018-01-03    2.0
           2018-01-04    3.0
           2018-01-05    4.0
2018-01-02 2018-01-02    1.0
           2018-01-03    2.0
           2018-01-04    3.0
           2018-01-05    4.0
           2018-01-06    5.0
...