首页 > 解决方案 > 如何仅从 DataFrame 上的 groupby 中获取第一行?

问题描述

我正在研究一个数据框,该数据框在一天内有多个时间间隔的股票收盘价。我正在尝试进行 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

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

我是熊猫的新手,感谢您对此的帮助。

标签: pythonpandas

解决方案


首先,如果我正确理解了您的数据,您就不想放入Closegroupby。每笔交易都有一个时间戳DateClose价值。

您可以使用idxmax()获取索引和 loc:

Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax()]

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

Data.loc[Data.groupby([Data['Date'].dt.date])["Date"].idxmax(), 'Close']

推荐阅读