2015-10-06 4 views
2

У меня есть два Dataframes в Python Pandas. Предположим, что первый из них - df1. Нет необходимости, чтобы столбец идентификатора был заказан.Найти min, max и среднее значение ID в Python Pandas

id B C 
0 1 5 1 
1 1 5 1 
2 1 6 1 
3 1 7 1 
4 2 5 1 
5 2 6 1 
6 2 6 1 
7 3 7 1 
8 3 7 1 
9 4 6 1 
10 4 7 1 
11 4 7 1 

Тогда второй dataframe df2 имеет столбец с уникальными значениями id

id 
0 1 
1 2 
2 3 
3 4 

Я хочу, чтобы вычислить минимальное, максимальное и среднее значение столбца B для каждого id и добавить его к второй блок данных. Результат будет выглядеть так:

id min max avg 
0 1 5 7 5.75 
1 2 .. 
2 3 .. 
3 4 .. 

В этом примере, я был в состоянии повторить его путем расчета их для каждого id руководства. Это не проблема, поскольку в примере есть только 4 идентификатора. Но мой реальный пример имеет более 1000 идентификаторов. Есть ли какой-либо автоматический способ сделать это?

ответ

3

Использование agg функции на группах

In [96]: df.groupby('id')['B'].agg([pd.np.min, pd.np.max, pd.np.mean]) 
Out[96]: 
    amin amax  mean 
id 
1  5  7 5.750000 
2  5  6 5.666667 
3  7  7 7.000000 
4  6  7 6.666667 
+0

Вы можете просто сделать 'df.groupby ('идентификатор') [ 'B']. AGG ([ 'мин', 'Макс', 'средний']) 'here – EdChum

+0

Правда, я давал намек, что вы можете использовать numpy funcs для agg. – Zero

+0

Я думаю, это трудно понять, пока вы не попробуете, какие ufuncs уже отображают из строки в их np эквиваленты – EdChum

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