我成功地使用groupby()函数计算分组数据的统计信息,但现在我想对每个组的子集执行相同的操作。
我似乎无法理解如何为每个组生成一个子集(作为一个groupby对象),然后将其应用于mean()等groupby函数。以下代码行按预期工作:
d.groupby(['X','Y'])['Value'].mean()
我应如何对各个组的值进行子集,以便再提交给平均函数? 我猜测transform()或filter()也许有用,但我无法弄清楚如何使用。
编辑以添加可重现的示例:
random.seed(881)
value = np.random.randn(15)
letter = np.random.choice(['a','b','c'],15)
date = np.repeat(pd.date_range(start = '1/1/2001', periods=3), 5)
data = {'date':date,'letter':letter,'value':value}
df = pd.DataFrame(data)
df.groupby(['date','letter'])['value'].mean()
date letter
2001-01-01 a -0.039407
b -0.350787
c 1.221200
2001-01-02 a -0.688744
b 0.346961
c -0.702222
2001-01-03 a 1.320947
b -0.915636
c -0.419655
Name: value, dtype: float64
这里有一个计算多层分组平均值的示例。现在我想要找到每个组的子集的平均值。例如,每个组数据的平均值是小于该组第10百分位数的数据。关键点是子集必须在组内进行,而不是在整个数据框中先进行。