另一列的每个唯一值的30个最新数据点的平均值

时间:2015-08-12 23:35:29

标签: python pandas group-by

如果给定日期列a,我会尝试在列b中指定的每种类型的产品中获取列c中30个最新点的平均值。

因此,平均值的计算将基于每个特定Product的最近30个点,而不是整个DataFrame的总体最新数据点。

df:

Product            Value      Date
POL Mumbai         22.5       2015-6-26
STOLCO Finesse     55.5       2015-7-1
MPLR  Pure         85.0       2015-8-1

1 个答案:

答案 0 :(得分:0)

一般而言,您可以groupby假设您的数据框名为df,其列为' b'像这样:

products = df.groupby('b)

然后按如下方式遍历每个产品组:

mean = {}
for product, data in products:
    mean[product] = data.sort('c', ascending=False).head(30)['a'].mean()
print DataFrame.from_dict(mean.items(), columns=['Product', 'Mean')

print Series(mean)

有关您遇到的错误的详细信息,请参阅here