首页 > 解决方案 > 选择特定多索引级别的行

问题描述

我有一个带有多索引的数据框,我需要从第一个索引的每个部分中删除第一行。

                        cshoc   prccd       mkt_val    return
gvkey  datadate
001075 2019-01-29  112080000.0   87.36  9.791309e+09  0.006916
       2019-01-30  112080000.0   87.62  9.820450e+09  0.002976
       2019-01-31  112080000.0   88.12  9.876490e+09  0.005706
       2019-02-01  112080000.0   87.65  9.823812e+09 -0.005334
       2019-02-04  112080000.0   87.53  9.810362e+09 -0.001369
...                        ...     ...           ...       ...
316056 2020-01-21   92917000.0  127.14  1.181347e+10 -0.007107
       2020-01-22   92917000.0  129.45  1.202811e+10  0.018169
       2020-01-23   92917000.0  129.80  1.206063e+10  0.002704
       2020-01-24   92917000.0  128.00  1.189338e+10 -0.013867
       2020-01-27   92917000.0  127.67  1.186271e+10 -0.002578`

例如,代码将删除 datadate = '2019-01-29' 和 '2020-01-21' 处的行。第一行将始终具有不同的“数据日期”索引值,因此我无法选择特定值。

我尝试过 .iloc[:,1:]、.iloc[:,:,1:] 之类的方法以及 IndexSlice 的方法。到目前为止,没有任何效果。

任何帮助,将不胜感激!

标签: pythonpandasdataframemultidimensional-arrayindexing

解决方案


tail

df.groupby(level=0).apply(lambda d: d.tail(-1))

推荐阅读