Найти наиболее часто используемую строку в кадре данных

Я новичок в программировании на 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

python,string,pandas,nlp,

0

Ответов: 1


1

Использование 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
питон, строка, панды, NLP,
Похожие вопросы