Это возвращает список, содержащий все элементы в баре, которые имеют обитателей> 1.
Мне кажется groupby
на первом уровне MultiIndex
с idxmax
, а затем выберите строки по loc
:
df = pd.DataFrame({'club':list('AABBCC'),
'min':[4,5,4,5,5,4],
'mean':[7,8,9,4,2,3],
'max':[1,3,5,7,1,0],
'count':[5,3,6,9,2,4],
'nationality':list('aaabbb')}).set_index(['club','nationality'])
print (df)
min mean max count
club nationality
A a 4 7 1 5
a 5 8 3 3
B a 4 9 5 6
b 5 4 7 9
C b 5 2 1 2
b 4 3 0 4
df = df.loc[df.groupby(level=1)['count'].idxmax()]
print (df)
min mean max count
club nationality
B a 4 9 5 6
b 5 4 7 9
Подробности:
print (df.groupby(level=1)['count'].idxmax())
nationality
a (B, a)
b (B, b)
Name: count, dtype: object
df.loc[df.groupby(level=0)['count'].idxmax()]
– jezrael 13 July 2018 в 09:10