我在使用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时遇到以下问题(我相对较新):我有一个简单的数据集,其中包含日期列和对应的值列。我可以通过...
对于具有与原始GroupBy.transform
相同大小的系列,请使用具有lambda函数的GroupBy.transform
,因此可以通过DataFrame
进行过滤:
您可以创建自己的函数并将其boolean indexing
: