Pandas:如何为每个索引组降低最低的第5个百分位数?

问题描述 投票:0回答:2

我在使用python pandas时遇到以下问题(我相对较新):我有一个简单的数据集,其中包含日期列和对应的值列。通过执行以下操作,我可以按日期和值对该数据框进行排序:

df = df.sort_values(['date', 'value'],ascending=False)

我知道了:

date       value
2019-11    100
2019-11    89
2019-11    87
2019-11    86   
2019_11    45
2019_11    33
2019_11    24
2019_11    11
2019_11    8
2019_11    5
2019-10    100 
2019-10    98
2019-10    96
2019-10    94
2019_10    94
2019_10    78
2019_10    74
2019_10    12
2019_10    3
2019_10    1

现在,我想做的是摆脱每个月份(每个组)的值列的最低第五个百分位数。我知道我应该使用groupby方法,也许还有一个函数:

df = df.sort_values(['date', 'value'],ascending=False).groupby('date', group_keys=False).apply(<???>)

???是我挣扎的地方。我知道如何通过以下方式抑制排序的数据框中最低的第5个百分位数,例如:

df = df[df.value > df.value.quantile(.05)]

这是StackOverflow上另一篇文章的对象。我知道我也可以使用numpy来执行此操作,而且速度要快得多,但是我的问题实际上是如何在Dataframe中将其独立地应用于每个组(值列的每个部分按月排序),而不仅仅是整个数据框。

任何帮助将不胜感激非常感谢你,亲切的问候,贝尔蒂

我在使用python pandas时遇到以下问题(我相对较新):我有一个简单的数据集,其中包含日期列和对应的值列。我可以通过...

python-3.x pandas dataframe pandas-groupby percentile
2个回答
1
投票

对于具有与原始GroupBy.transform相同大小的系列,请使用具有lambda函数的GroupBy.transform,因此可以通过DataFrame进行过滤:


0
投票

您可以创建自己的函数并将其boolean indexing

© www.soinside.com 2019 - 2024. All rights reserved.