我正在开发一种DataFrame,它在一天中的几个时间间隔内有多个股票收盘价。我正在尝试执行groupby,以获得最终的收盘价(在Date列上应用max函数时的第一行)。
我的groupby代码如下所示:
closingPrice = Data.groupby([Data['Date'].dt.date, 'Close'])["Date"].max()
这将产生以下输出:
Date Close
2019-11-11 1706.75 2019-11-11 14:15:00
1710.75 2019-11-11 10:15:00
1711.00 2019-11-11 12:15:00
1712.00 2019-11-11 11:15:00
1712.85 2019-11-11 13:15:00
...
2020-11-06 3238.75 2020-11-06 14:15:00
3240.00 2020-11-06 12:15:00
3243.65 2020-11-06 13:15:00
如何更改上面的行,使我只得到第一行?我每天只需要排一排。
我刚接触熊猫,非常感谢你在这方面的帮助。
发布于 2020-11-11 03:26:51
首先,如果我正确理解了您的数据,您不希望将Close
放在groupby中。每个事务都有一个时间戳Date
和Close
值。
您可以使用idxmax()
获取索引,并锁定:
Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax()]
如果只关心Close
价格,可以将该列传递给loc
Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax(), 'Close']
发布于 2020-11-11 04:47:16
我也在处理熊猫的交易价格。
我已经创建了一个文件(excel,csv等),其中存储了所有相关的交易日,因此没有节假日的正常工作日。之后,我导入这些“日历”,并将交换价格合并到这些日期。
如果日期和结束时间是可预测的,那么您可以对日期和时间戳执行相同的操作。这种方法的另一个优点是,您可以检查丢失的价格,因为您知道应该有哪些数据。
如果你感兴趣,我明天可以分享我的代码
https://stackoverflow.com/questions/64775467
复制相似问题