What's an efficient way to extract second index after groupby
against the maximum customer count per group.
Assume a dataframe df
with various states and 10 officers (names Officer 1
to Officer 10
) in every state. The column Current Status
will always have value Customer
:
State List Sales Officer Current Status
0 UP Officer 4 Customer
1 MH Officer 5 Customer
2 AP Officer 6 Customer
3 AN Officer 2 Customer
4 GJ Officer 3 Customer
.... so on
The expected output consists of sales officer with highest customer count in each state:
State List Sales Officer
AN Officer 6 403
AP Officer 1 266
Officer 8 266
... and so on
So far I've performed the following:
df.groupby(['State List', 'Sales Officer'])['Current Status'].count()#.reset_index()
giving me the following:
State List Sales Officer
AN Officer 1 376
Officer 10 401
Officer 2 353
Officer 3 373
Officer 4 375
Officer 5 382
Officer 6 403
Officer 7 400
Officer 8 385
Officer 9 378
AP Officer 1 266
Officer 10 228
Officer 2 240
Officer 3 248
Officer 4 235
Officer 5 229
Officer 6 242
Officer 7 238
Officer 8 266
Officer 9 243
Now, I'm stuck in fetching out the Sales Officer
against each State List
with maximum customer count. Any ideas!
Use boolean indexing
with transform
of max
for return Series
with same size like original:
s = df.groupby(['State List', 'Sales Officer'])['Current Status'].count()
df = s[s == s.groupby('State List').transform('max')]
print (df)
State List Sales Officer
AN Officer 6 403
AP Officer 1 266
Officer 8 266
Name: a, dtype: int64
Detail :
print (s.groupby('State List').transform('max'))
State List Sales Officer
AN Officer 1 403
Officer 10 403
Officer 2 403
Officer 3 403
Officer 4 403
Officer 5 403
Officer 6 403
Officer 7 403
Officer 8 403
Officer 9 403
AP Officer 1 266
Officer 10 266
Officer 2 266
Officer 3 266
Officer 4 266
Officer 5 266
Officer 6 266
Officer 7 266
Officer 8 266
Officer 9 266
Name: a, dtype: int64
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.