У меня есть этот dataframe с данными, где df ['two'] = 0 фильтруется, а затем я сгруппировал его в последовательных «подгруппах», показывая ответ в «результатах».Получить статистику по подгруппам в pandas
import pandas as pd
import numpy as np
import itertools
import operator
index = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p']
df = pd.DataFrame(index=index)
df['one'] = range(16)
df['two'] = [-1,0,0,-1,1,0,0,-1,-1,0,0,0,0,0,-1,1]
df['three'] = [0,1,3,5,5,8,10,12,13,17,18,20,22,24,25,26]
df_filter = df[((df['two']==0))]
df_filter_list = df_filter.one.tolist()
results = []
for k, g in itertools.groupby(enumerate(df_filter_list), lambda (i,x):i-x):
group = map(operator.itemgetter(1), g)
results.append(group)
print results
[[1, 2], [5, 6], [9, 10, 11, 12, 13]]
Теперь мой вопрос, как я могу использовать значение «результатов» и вернуться, чтобы получить статистику для каждой отдельной подгруппы определенной колонки?
Например, если я хочу знать среднее значение df ['three'] для второй «подгруппы» ([5,6] в результатах), это будет среднее значение 5-й и 6-й строк для столбца «три», поэтому среднее значение 5 и 8. . Или, если я хочу знать максимальную третью «подгруппу» [9,10,11,12,13], это будет 26.
благодарит за ваш ответ. Раньше не было достаточно ясно. Что делать, если мне нужно получить среднее значение для каждой из подгрупп в очень большой базе данных, а не только одну из них? пытался сделать «для i в диапазоне (len (results))» перед «для элемента в результатах [i]», что вы сделали, но не работали для меня ... – Gabriel