Pandas中使用Groupby的索引范围



假设我有以下Multiindex数据框架,命名为data:

Multiindex                   | Val
-----------------------------------
'A'    | 'xxx'  | 2016-10-24 | 1
                | 2016-10-25 | 2
                | 2016-10-26 | 0.5
                | 2016-10-26 | 0.5
-----------------------------------
'B'    | 'xxx'  | 2016-10-24 | 0
                | 2016-10-25 | -2
                | 2016-10-26 | -4
                | 2016-10-26 | 20
                | 2016-10-27 | 3
                | 2016-10-28 | 5

我想保留多索引级别0中每个组的最后20%的数据(即'A'和'B'的最后20%)。我知道如何在第0层获得每个索引所需的元素数量:

numElem = (data.groupby(level=0).size()*0.2).astype(np.int)

但我不确定如何提取这些数据。

使用groupby().transformcumcountsize:

groups = data.groupby(level=0)
sizes = groups['Val'].transform('size')
rows = groups['Val'].cumcount()
data[rows >= 0.8 * sizes]

相关内容

  • 没有找到相关文章

最新更新