我对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
现在,我的想法是要针对每个月份(每个组)的value列中最低的5%进行处理。我知道应该使用groupby方法,可能还需要一个函数:
df = df.sort_values(['date', 'value'],ascending=False).groupby('date', group_keys=False).apply(<???>)
我在哪里感到困难。 我知道如何将整个已排序的Dataframe中最低的5百分位数抑制,例如通过执行以下操作:
df = df[df.value > df.value.quantile(.05)]
这是StackOverflow中另一篇帖子的内容。我知道我也可以使用numpy来完成这个任务,而且速度更快,但我的问题实际上是如何将其独立地应用于每个分组(按月份排序的值列的每个部分)在数据框架中,而不仅仅是整个数据框架。
非常感谢任何帮助, 谢谢你们了, 诚挚问候, Berti