Найти наиболее частую строку во фрейме данных - PullRequest
0 голосов
/ 24 августа 2018

Я новичок в программировании на Python. У меня есть фрейм данных pandas, в котором присутствуют два строковых столбца.

Фрейм данных как ниже:

Case    Action
Create   Create New Account
         Create New Account
         Create New Account
         Create New Account
         Create Old Account
Delete   Delete New Account
         Delete New Account
         Delete Old Account
         Delete Old Account
         Delete Old Account

Здесь мы видим в Create, из 5 действий 4 действия были Create New Account. Означает 4/5 (= 80%). Аналогично, в случае Delete максимальные значения составляют Delete Old Account. Поэтому мое требование заключается в том, чтобы в следующий раз, когда в любом случае было указано Create, я должен получить o / p как Crate New Account с частотой.

Ожидаемая O / P:

Case    Action              Score
Create  Create New Account  80
Delete  Delete Old Account  60

1 Ответ

0 голосов
/ 24 августа 2018

Использование crosstab до groupby tail

pd.crosstab(df.Case,df.Action,normalize='index').stack().sort_values().groupby(level=0).tail(1)
Out[769]: 
Case    Action          
Delete  DeleteOldAccount    0.6
Create  CreateNewAccount    0.8
dtype: float64

Или сделать это с where

pdf=pd.crosstab(df.Case,df.Action,normalize='index')
pdf.where(pdf.eq(pdf.max(1),axis=0)).stack()
Out[781]: 
Case    Action          
Create  CreateNewAccount    0.8
Delete  DeleteOldAccount    0.6
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...