每天将 pandas 数据框转换为分钟频率 [英] Conversion of Daily pandas dataframe to minute frequency
本文介绍了每天将 pandas 数据框转换为分钟频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个定义为(df)的数据帧,该数据帧的频率为每日一次,我想将其转换为分钟频率,开始于8:30,结束于16:00.
I have a dataframe as defined below (df) with daily frequency and I would like to convert this to minute frequency, starting at 8:30 and ending at 16:00.
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)
有人可以建议如何做吗?
Can anyone suggest how to do this?
推荐答案
我相信您需要通过 DataFrame.asfreq
,通过MultiIndex,为MultiIndex
的稳定/引用/api/pandas.DataFrame.stack.html"rel =" nofollow noreferrer> DataFrame.stack
:
I believe you need reshape by DataFrame.unstack
for DatetimeIndex
, then set minute frequency by DataFrame.asfreq
, filter times by DataFrame.between_time
and last use DataFrame.stack
for MultiIndex
:
df1 = df.unstack().asfreq('Min', method='ffill').between_time('8:30','16:00').stack()
print (df1.head(10))
returns
date ticker
2016-11-28 08:30:00 aapl 0.2
amzn 0.2
fb 0.2
ge 0.2
jpm 0.2
msft 0.2
2016-11-28 08:31:00 aapl 0.2
amzn 0.2
fb 0.2
ge 0.2
这篇关于每天将 pandas 数据框转换为分钟频率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文