首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在DataFrame上只获取groupby中的第一行?

如何在DataFrame上只获取groupby中的第一行?
EN

Stack Overflow用户
提问于 2020-11-11 03:24:38
回答 2查看 29关注 0票数 1

我正在开发一种DataFrame,它在一天中的几个时间间隔内有多个股票收盘价。我正在尝试执行groupby,以获得最终的收盘价(在Date列上应用max函数时的第一行)。

我的groupby代码如下所示:

代码语言:javascript
运行
复制
closingPrice = Data.groupby([Data['Date'].dt.date, 'Close'])["Date"].max()

这将产生以下输出:

代码语言:javascript
运行
复制
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

如何更改上面的行,使我只得到第一行?我每天只需要排一排。

我刚接触熊猫,非常感谢你在这方面的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-11 03:26:51

首先,如果我正确理解了您的数据,您不希望将Close放在groupby中。每个事务都有一个时间戳DateClose值。

您可以使用idxmax()获取索引,并锁定:

代码语言:javascript
运行
复制
Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax()]

如果只关心Close价格,可以将该列传递给loc

代码语言:javascript
运行
复制
Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax(), 'Close']
票数 1
EN

Stack Overflow用户

发布于 2020-11-11 04:47:16

我也在处理熊猫的交易价格。

我已经创建了一个文件(excel,csv等),其中存储了所有相关的交易日,因此没有节假日的正常工作日。之后,我导入这些“日历”,并将交换价格合并到这些日期。

如果日期和结束时间是可预测的,那么您可以对日期和时间戳执行相同的操作。这种方法的另一个优点是,您可以检查丢失的价格,因为您知道应该有哪些数据。

如果你感兴趣,我明天可以分享我的代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64775467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档