python - 将 Daily pandas 数据帧转换为分钟频率
问题描述
我有一个如下定义的数据框(df),具有每日频率,我想将其转换为分钟频率,从 8:30 开始,到 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)
谁能建议如何做到这一点?
解决方案
我相信你需要重塑DataFrame.unstack
for DatetimeIndex
,然后设置分钟频率DataFrame.asfreq
,过滤时间DataFrame.between_time
和最后DataFrame.stack
使用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
推荐阅读
- html - 试图用背景图像填充整个内容框
- amazon-web-services - 使用 Lambda 启动 EC2 实例并附加到目标组
- java - 找不到 Springboot 存储库
- javascript - 无法调用返回数组以在全日历中设置事件的函数
- r - 如何使用 R 在文本文件中写入一个绝对有一个反斜杠的字符串?
- c# - 如何使用二进制掩码查找边界体素(像素),以仅获取段表面
- python - 如何遍历字典形状 .txt 文件以创建 DataFrame
- javascript - 浏览器中的东部计算给出了错误的 2021 年数字
- c++ - 如何复制具有动态内存分配数据成员的 C++ 对象
- c - 当 MSB 位等于 0 时如何以 HEX 格式打印