Как пересэмплировать временной ряд данных в соответствии с фактической временной меткой? - PullRequest
1 голос
/ 24 марта 2020

У меня есть такой фрейм данных 'a',

[In]  a
[Out]
                  0
date               
2014-01-28  10.1956
2014-01-29  10.6456
2014-01-30  10.4350
2014-02-07  10.8275
2014-02-10  10.9806
2014-02-11  10.9711
2014-02-12  10.8849
2014-02-13  10.3967
2014-02-14  10.5211
2014-02-17  10.7700
2014-02-18  10.5211
2014-02-19  10.9232
2014-02-20  10.5594
2014-02-21  10.3679
2014-02-24  10.5115
2014-02-25  10.2339
2014-02-26  10.1286
2014-02-27   9.9371
2014-02-28  10.2914
2014-03-03  10.4732
2014-03-04  10.3201
2014-03-05  10.3296

Если я использую resample для сбора последнего дня каждого месяца, результат будет:

[In]  a.resample('M').last() 
[Out]
                  0
date    
2014-01-31  10.4350
2014-02-28  10.2914
2014-03-31  10.3296

Как вы Можно видеть, что в исходном индексе отсутствуют «2014-01-31» и «2014-03-31». Я только хочу сохранить последнюю дату каждого месяца от исходного индекса. Результат должен быть:

                  0
date    
2014-01-30  10.4350
2014-02-28  10.2914
2014-03-05  10.3296

Как я могу получить такой результат? Кстати, я использовал 'BM' в повторной выборке и получил тот же результат.

1 Ответ

1 голос
/ 24 марта 2020

Преобразовать индекс в столбец, использовать параметр on в resample с last и последний переназначить индекс в date столбец:

df = a.reset_index().resample('M', on='date').last().set_index('date')
print (df)
                  0
date               
2014-01-30  10.4350
2014-02-28  10.2914
2014-03-05  10.3296
...