Я пытаюсь преобразовать дневной частотный фрейм данных в минутные данные, и в предыдущем посте было предложено использовать метод ffil, приведенный ниже, но, похоже, он не работает с фреймами данных, которые состоят только из 2 строк ( Преобразованиеof Daily pandas dataframe к минутной частоте ).
Таким образом, нижеприведенный кадр данных должен быть преобразован.
import pandas as pd
dict = [
{'ticker':'jpm','date': '2016-11-28','returns': 0.2},
{ 'ticker':'ge','date': '2016-11-28','returns': 0.2},
{'ticker':'fb', 'date': '2016-11-28','returns': 0.2},
{'ticker':'aapl', 'date': '2016-11-28','returns': 0.2},
{'ticker':'msft','date': '2016-11-28','returns': 0.2},
{'ticker':'amzn','date': '2016-11-28','returns': 0.2},
{'ticker':'jpm','date': '2016-11-29','returns': 0.2},
{'ticker':'ge', 'date': '2016-11-29','returns': 0.2},
{'ticker':'fb','date': '2016-11-29','returns': 0.2},
{'ticker':'aapl','date': '2016-11-29','returns': 0.2},
{'ticker':'msft','date': '2016-11-29','returns': 0.2},
{'ticker':'amzn','date': '2016-11-29','returns': 0.2}
]
df = pd.DataFrame(dict)
df['date'] = pd.to_datetime(df['date'])
df=df.set_index(['date','ticker'], drop=True)
Это работает на всем фрейме данных:
df_min = df.unstack().asfreq('Min', method='ffill').between_time('8:30','16:00').stack()
Но когда я работаю с меньшим фреймом данных, он почему-то возвращает пустой фрейм данных:
df2=df.iloc[0:2,:]
df2_min = df2.unstack().asfreq('Min', method='ffill').between_time('8:30','16:00').stack()
У кого-нибудь есть объяснение этому странному поведению?
edt: я заметил, что код работает, только если в фрейме данных есть хотя бы 7 строк.