asfreq () возвращает пустой фрейм данных - PullRequest
0 голосов
/ 28 июня 2018

У меня есть фрейм данных с DateTimeIndex:

import pandas as pd
from pandas.tseries.offsets import *

data = pd.read_excel('P:\\Simon\\govt_bond_yields.xlsx')
data.head()

              USA   Italy   UK   EURO ZONE  GREECE  GERMANY
2018-06-25  2.8748  2.782   1.299   0.327   4.102   0.327
2018-06-22  2.8949  2.694   1.319   0.335   4.114   0.335
2018-06-21  2.8967  2.732   1.277   0.333   4.279   0.333
2018-06-20  2.9389  2.549   1.297   0.375   4.332   0.375
2018-06-19  2.8967  2.557   1.283   0.370   4.344   0.370

В настоящее время мой индекс не имеет частоты

data.index

DatetimeIndex(['2018-06-25', '2018-06-22', '2018-06-21', '2018-06-20',
               '2018-06-19', '2018-06-18', '2018-06-15', '2018-06-14',
               '2018-06-13', '2018-06-12',
               ...
               '2015-01-27', '2015-01-26', '2015-01-23', '2015-01-22',
               '2015-01-21', '2015-01-20', '2015-01-16', '2015-01-15',
               '2015-01-14', '2015-01-13'],
              dtype='datetime64[ns]', length=862, freq=None)

Я пытаюсь установить частоту индекса, но после этого я получаю пустой фрейм данных

data.asfreq(freq='D')

USA Italy UK EURO ZONE  GREECE  GERMANY

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

IIUC, я думаю, что вы хотите сделать resample с asfreq:

data.resample('D').asfreq()

Выход:

               USA  Italy     UK  EURO ZONE  GREECE  GERMANY
2018-06-19  2.8967  2.557  1.283      0.370   4.344    0.370
2018-06-20  2.9389  2.549  1.297      0.375   4.332    0.375
2018-06-21  2.8967  2.732  1.277      0.333   4.279    0.333
2018-06-22  2.8949  2.694  1.319      0.335   4.114    0.335
2018-06-23     NaN    NaN    NaN        NaN     NaN      NaN
2018-06-24     NaN    NaN    NaN        NaN     NaN      NaN
2018-06-25  2.8748  2.782  1.299      0.327   4.102    0.327
0 голосов
/ 28 июня 2018

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

# Unsorted data with a datetime index:
>>> data
               USA  Italy     UK  EURO ZONE  GREECE  GERMANY
2018-06-25  2.8748  2.782  1.299      0.327   4.102    0.327
2018-06-22  2.8949  2.694  1.319      0.335   4.114    0.335
2018-06-21  2.8967  2.732  1.277      0.333   4.279    0.333
2018-06-20  2.9389  2.549  1.297      0.375   4.332    0.375
2018-06-19  2.8967  2.557  1.283      0.370   4.344    0.370

>>> data.sort_index().asfreq(freq='D')
               USA  Italy     UK  EURO ZONE  GREECE  GERMANY
2018-06-19  2.8967  2.557  1.283      0.370   4.344    0.370
2018-06-20  2.9389  2.549  1.297      0.375   4.332    0.375
2018-06-21  2.8967  2.732  1.277      0.333   4.279    0.333
2018-06-22  2.8949  2.694  1.319      0.335   4.114    0.335
2018-06-23     NaN    NaN    NaN        NaN     NaN      NaN
2018-06-24     NaN    NaN    NaN        NaN     NaN      NaN
2018-06-25  2.8748  2.782  1.299      0.327   4.102    0.327

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

# Check the index:
>>> data.sort_index().asfreq(freq='D').index
DatetimeIndex(['2018-06-19', '2018-06-20', '2018-06-21', '2018-06-22',
               '2018-06-23', '2018-06-24', '2018-06-25'],
              dtype='datetime64[ns]', freq='D')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...