Я хотел бы иметь возможность вычислять описательную статистику по данным в Pandas DataFrame, но мне все равно, что дублируются записи. Например, скажем, у меня есть DataFrame, созданный с помощью
import pandas as pd
data={'key1':[1,2,3,1,2,3,2,2],'key2':[2,2,1,2,2,4,2,2],'data':[5,6,2,6,1,6,2,8]}
frame=pd.DataFrame(data,columns=['key1','key2','data'])
print frame
key1 key2 data
0 1 2 5
1 2 2 6
2 3 1 2
3 1 2 6
4 2 2 1
5 3 4 6
6 2 2 2
7 2 2 8
Как вы можете видеть, строки 0,1,3,4,6 и 7 - все дубликаты (используя "key1" и "key2". Однако, если я индексирую этот DataFrame так:
frame[frame.duplicated(['key1','key2'])]
Я получаю
key1 key2 data
3 1 2 6
4 2 2 1
6 2 2 2
7 2 2 8
(т.е. 1-я и 2-я строки не отображаются, потому что они не индексируются True с помощью дублированного метода).
Это моя первая проблема. Мои другие проблемы касаются того, как извлечь описательную статистику из этой информации. Забыв отсутствующий дубликат на данный момент, скажем, я хочу вычислить .min() и .max() для повторяющихся записей (чтобы я мог получить диапазон). Я могу использовать groupby и эти методы для объекта groupby следующим образом:
a.groupby(['key1','key2']).min()
который дает
key1 key2 data
key1 key2
1 2 1 2 6
2 2 2 2 1
Данные, которые я хочу, здесь явно, но какой лучший способ для меня извлечь его? Как индексировать результирующий объект, чтобы получить то, что я хочу (это ключ1, key2, информация о данных)?