Как я могу переиндексировать ежемесячный ряд панд в минуты, имея значения, соответствующие месяцу в каждом дне из полученных дней этих месяцев? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть серия панд этой формы:

1950-01-31      2.0
1950-02-28      2.0
1950-03-31      1.0
1950-04-30      2.0
1950-05-31      0.0
1950-06-30      0.0

Я хотел бы переиндексировать пароль от ежемесячно до минут, как это:

1950-01-31 00:00:00     2.0
1950-01-31 00:01:00     2.0
1950-01-31 00:02:00     2.0
1950-02-28 00:03:00     2.0
.
.
.


1950-06-30 00:00.00     0.0
1950-06-30 00:01.00     0.0
1950-06-30 00:02.00     0.0
1950-06-30 00:03.00     0.0
.
.

Я имею в виду, например, что значенияв соответствии с 1950-01-31, то есть в данном случае 2,0, он расширяется до каждой минуты этого месяца и последовательно

привет, спасибо, у меня проблема, мне нужно строго, чтобы значение было в месяцеэто относится, например, если я использую s.resample ('T'). ffill (), у меня есть это в моей результирующей серии:

2018-03-31 23:24:00    2.0
2018-03-31 23:25:00    2.0
2018-03-31 23:26:00    2.0
2018-03-31 23:27:00    2.0
                      ... 
2018-04-01 23:31:00    2.0
2018-04-01 23:32:00    2.0
2018-04-01 23:33:00    2.0
2018-04-01 23:34:00    2.0

каждая минута 2018-04 этого месяца должна быть 0.0 вместоу меня 2.0 с использованием s.resample ('T'). ffill ().возобновить нуждающуюся серию, увеличив месячные значения до минут в соответствующих месяцах с первых минут до последней минуты этого месяца.(Простите за мой английский)

1 Ответ

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

IIUC:

Настройка

s = pd.Series([2, 2, 1, 2, 0, 0], pd.date_range('1950-01-31', periods=6, freq='M'))

Вещание и reindex

Выглядит так, как будто вы снимаете только первые 4 минуты.Поэтому я создал массив временных шкал с интервалом от 0 до 3 минут.

d = np.arange(4).astype('timedelta64[m]')

s.reindex((s.index.values[:, None] + d).ravel(), method='ffill')

1950-01-31 00:00:00    2
1950-01-31 00:01:00    2
1950-01-31 00:02:00    2
1950-01-31 00:03:00    2
1950-02-28 00:00:00    2
1950-02-28 00:01:00    2
1950-02-28 00:02:00    2
1950-02-28 00:03:00    2
1950-03-31 00:00:00    1
1950-03-31 00:01:00    1
1950-03-31 00:02:00    1
1950-03-31 00:03:00    1
1950-04-30 00:00:00    2
1950-04-30 00:01:00    2
1950-04-30 00:02:00    2
1950-04-30 00:03:00    2
1950-05-31 00:00:00    0
1950-05-31 00:01:00    0
1950-05-31 00:02:00    0
1950-05-31 00:03:00    0
1950-06-30 00:00:00    0
1950-06-30 00:01:00    0
1950-06-30 00:02:00    0
1950-06-30 00:03:00    0
dtype: int64

Чтобы захватить каждую минуту, делайте, как предложил @Wen

s.resample('T').ffill()
...