熊猫:按基本级别的最新日期过滤具有多索引的数据框

问题描述

我有一个具有以下格式的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')来做到这一点,但是我正在寻找更快的方法

解决方法

通过groupbytail进行检查

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