python - 选择特定多索引级别的行
问题描述
我有一个带有多索引的数据框,我需要从第一个索引的每个部分中删除第一行。
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 的方法。到目前为止,没有任何效果。
任何帮助,将不胜感激!
解决方案
tail
df.groupby(level=0).apply(lambda d: d.tail(-1))