2016-12-09 2 views
1

Обучение Pandas и борьба с более простым материалом .. заблаговременно за вашу помощь.Pandas Возврат строкового значения из агрегата dataframe max() функции count()

В конечном счете, я хочу, чтобы мой код возвращал только «апельсины», потому что имеет наибольшее количество значений в столбце COLOR.

Мой индекс в настоящее время столбец x.

X FRUIT COLOR 
10 apples green 
10 apples red 
10 oranges green 
10 oranges orange 
10 oranges yellow 
10 bananas yellow 
10 bananas green 

Я всегда, кажется, в конечном итоге возвращает пару ключей значение или только .Count номер() и не может показаться тянуть только значение столбца FRUIT из совокупности результатов.

Вот один из моих примеров кода пытается решить - я пробовал много, но это последняя одна, которая не работает:

df['COUNT'] = df.groupby(['FRUIT'])['FRUIT'].transform('SIZE') 
copy_df = df 
max = copy_df.loc[df['SIZE'] == copy_df['SIZE'].max()] 
print(max) 

Это возвращает «AttributeError: объект„SeriesGroupBy“не имеет атрибута ' SIZE '"- У меня были другие попытки с лучшими результатами, но я могу сказать, что я проблема, и никуда не гожусь ... спасибо снова за то, что помогли этому новичку!

ответ

1

Я думаю, что вам нужно изменить SIZE к size в transform:

df['SIZE'] = df.groupby(['FRUIT'])['FRUIT'].transform('size') 

max1 = df.loc[df['SIZE'] == df['SIZE'].max()] 
print(max1) 
    X FRUIT COLOR SIZE 
2 10 oranges green  3 
3 10 oranges orange  3 
4 10 oranges yellow  3 

Если нужно верхнее значение столбца FRUIT использования value_counts, а затем первое значение индекса по index[0], потому что выход сортируется:

print (df.FRUIT.value_counts()) 
oranges 3 
apples  2 
bananas 2 
Name: FRUIT, dtype: int64 

val = df.FRUIT.value_counts().index[0] 
print (val) 
oranges 

Другое решение с аггрегатом size с idxmax для проверки значения индекса максимального значения Series:

print (df.groupby('FRUIT')['FRUIT'].size()) 
FRUIT 
apples  2 
bananas 2 
oranges 3 
dtype: int64 

val = df.groupby('FRUIT')['FRUIT'].size().idxmax() 
print (val) 
oranges 
Смежные вопросы