python - 上一页 每日收盘
问题描述
我有一个盘中数据的数据框,我想在盘中数据的第二天获得前一个每日收盘价。我的数据框使用日期时间索引。
我好像没有什么好办法。我试图重新采样日期并获得每日收盘价,然后它们合并到另一个日期框架中,但这不会起作用,因为索引和大小不同。有没有办法通过熊猫使用矢量方法来做到这一点?THNX
Open High Low Close Vol Daily_Low is_daily_low PrevDayClose
datetime
2012-09-18 09:30:00 1324.25 1325.00 1321.75 1324.50 143720 1321.75 1 NaN
2012-09-18 10:00:00 1324.50 1325.50 1323.00 1324.25 96809 1321.75 0 NaN
2012-09-18 10:30:00 1324.25 1326.00 1323.50 1326.00 101617 1321.75 0 NaN
2012-09-18 11:00:00 1326.00 1327.50 1325.25 1327.00 100908 1321.75 0 NaN
2012-09-18 11:30:00 1326.75 1327.00 1324.25 1325.00 64223 1321.75 0 NaN
2012-09-18 12:00:00 1324.75 1325.25 1322.25 1322.50 60017 1321.75 0 NaN
2012-09-18 12:30:00 1322.50 1325.00 1322.25 1324.00 36732 1321.75 0 NaN
2012-09-18 13:00:00 1324.00 1325.00 1322.00 1323.75 50707 1321.75 0 NaN
2012-09-18 13:30:00 1323.75 1324.00 1322.50 1322.75 26744 1321.75 0 NaN
2012-09-18 14:00:00 1322.75 1324.25 1322.25 1323.75 33473 1321.75 0 NaN
2012-09-18 14:30:00 1323.50 1324.25 1322.50 1323.25 34082 1321.75 0 NaN
2012-09-18 15:00:00 1323.25 1325.00 1323.00 1324.25 34119 1321.75 0 NaN
2012-09-18 15:30:00 1324.25 1325.75 1323.25 1325.50 117758 1321.75 0 NaN
2012-09-19 09:30:00 1327.50 1327.50 1323.50 1324.50 147406 1323.50 1 NaN
2012-09-19 10:00:00 1324.50 1329.25 1324.50 1326.75 148099 1323.50 0 NaN
2012-09-19 10:30:00 1326.50 1327.25 1324.25 1326.25 106183 1323.50 0 NaN
2012-09-19 11:00:00 1326.25 1330.25 1325.75 1329.50 130089 1323.50 0 NaN
2012-09-19 11:30:00 1329.50 1330.25 1328.50 1329.25 61245 1323.50 0 NaN
2012-09-19 12:00:00 1329.25 1331.25 1328.25 1331.00 91314 1323.50 0 NaN
2012-09-19 12:30:00 1330.75 1331.25 1329.75 1330.25 32613 1323.50 0 NaN
2012-09-19 13:00:00 1330.50 1330.75 1328.75 1329.00 24016 1323.50 0 NaN
2012-09-19 13:30:00 1329.00 1330.00 1328.00 1329.00 29070 1323.50 0 NaN
2012-09-19 14:00:00 1328.75 1330.50 1328.75 1329.75 20754 1323.50 0 NaN
2012-09-19 14:30:00 1329.50 1330.75 1329.25 1330.75 25555 1323.50 0 NaN
2012-09-19 15:00:00 1330.50 1331.25 1329.50 1329.75 49683 1323.50 0 NaN
2012-09-19 15:30:00 1329.75 1330.00 1326.50 1326.50 138803 1323.50 0 NaN
2012-09-20 09:30:00 1320.00 1321.00 1315.75 1316.75 192555 1315.75 1 NaN
2012-09-20 10:00:00 1317.00 1321.00 1316.50 1320.25 163925 1315.75 0 NaN
2012-09-20 10:30:00 1320.00 1323.50 1319.75 1323.25 114184 1315.75 0 NaN
2012-09-20 11:00:00 1323.25 1324.50 1321.25 1322.25 126658 1315.75 0 NaN
我想把它作为一个列,它是前一天的收盘表格,它是从前一天向前填充的。因此,在我的情况下,前一个收盘列的数据应该从 2012 年 9 月 18 日 15:30 收盘到第二天 2012 年 9 月 19 日收盘前填充。9/20 应该在前一天收盘时填写第二天的 hte 列。
解决方案
您应该显示数据框的结构,以便其他人可以轻松地使答案更相关。
无论如何,您可以使用 pandas groupby 按日期分组,然后使用 last() 获取给定日期的“关闭”..然后使用 shift(-1) 获取前几天的关闭。
编辑:由于你不会共享数据结构,我将假设一个:
df = pd.DataFrame(columns = ['Price'], index = pd.date_range('1/1/2011', periods=72, freq='H'))
df.Price = range(72)
df['PrevClose']= df.Price.groupby(df.index.date).last().shift(1)
df['PrevClose'] = df['PrevClose'].fillna(method='ffill')
编辑#2:获取先前的关闭:
g = df.groupby(df.index.date).close.last().shift(1)
适用于新列:
df['daily_close'] = df.apply(lambda x: g.at[x.name.date()], axis=1)
推荐阅读
- javascript - 在 vue、javascript、html 和 css 中单击时突出显示
- python - TypeError:在更新 Conda 时,“PrefixRecord”和“PackageRecord”的实例之间不支持“<”
- java - 如何设置我的 JAR 文件类路径以使用外部文件夹进行依赖?
- powershell - Powershell:如何将标准输出和标准错误分别重定向到文件和控制台
- javascript - Javascript:如果我们有元素属性的集合,如何删除数组
- c# - 使用 C# ASP.NET MVC 显示来自单个数组 JSON(azure Cosmos db) 的数据
- python - 如何在 python 中设置新的 midtrans 客户端支付网关
- vba - 如何在运行时从文档正文中动态读取 VBA 宏字符串?
- swift - 表格视图中的数据混合,我该如何避免?迅速
- reactjs - 为什么复选框不能在我的导航组件中进行视觉更新