2015-08-12 3 views
0

Я пытаюсь получить среднее значение из 30 последних точек в столбце a для каждого типа продукта, указанного в столбце b, с учетом столбца даты c.Среднее значение 30 последних точек данных для каждого уникального значения другого столбца

Таким образом, расчет среднего значения будет основываться на последних 30 точках каждого конкретного Product в отличие от последних последних точек данных всего 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 

ответ

0

В общих чертах, вы могли бы groupby ваш DataFrame предполагается назвать df своей колонку «Ъ», как так:

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 для получения более подробной информации об ошибке, с которой вы столкнулись.

+0

Спасибо Стефан, я пробовал это, но я должен делать что-то неправильно. Ошибка: «Если вы используете все скалярные значения, вы должны передать индекс». – pedramoh

+0

Привет, вы могли бы поделиться своими данными, например, ваши «продукты»? – Stefan

+0

Просто добавленный примерный формат в исходном вопросе. Приветствия – pedramoh

Смежные вопросы