首页 > 解决方案 > Pandas:按每个基本级别的最近日期过滤具有多索引的数据框

问题描述

我有一个具有以下格式的 pd.DataFrame:

                    dimension    datekey  ...    tbvps workingcapital
ticker calendardate                       ...                        
A      2020-03-31         MRT 2020-04-30  ...   16.026   1.226000e+09
AAL    2020-03-31         MRT 2020-03-31  ...  123.058  -1.203800e+10
       2020-06-30         MRT 2020-06-30  ...  138.105  -4.211000e+09
AAP    2020-03-31         MRT 2020-04-18  ...  150.120   1.740946e+09
       2020-06-30         MRT 2020-07-11  ...  148.265   1.957966e+09

我只想选择每个股票带有最新日历日期的行,所以输出看起来像这样:

                    dimension    datekey  ...    tbvps workingcapital
ticker calendardate                       ...                        
A      2020-03-31         MRT 2020-04-30  ...   16.026   1.226000e+09
AAL    2020-06-30         MRT 2020-06-30  ...  138.105  -4.211000e+09
AAP    2020-06-30         MRT 2020-07-11  ...  148.265   1.957966e+09
       

我知道如何通过遍历 level(0) 索引值并使用 df.loc[ticker].last('1D') 来做到这一点,但我正在寻找更快的东西。

标签: pandasmulti-index

解决方案


检查groupbytail

df = df.groupby(level=0).tail(1)

推荐阅读