Назначить наиболее часто встречающиеся значения в одном столбце новому столбцу

#python #pandas #numpy #dataframe

#python #pandas #numpy #фрейм данных

Вопрос:

Мне нужно найти 15 наиболее часто встречающихся значений в одном столбце и присвоить их новому столбцу. Я попробовал ниже, но это не сработало.

 df2 = df.assign(job15 = df['job'].value_counts()[14::-1])
 

и это также

 df['job15'] = df['job'].value_counts()[14::-1]
 

но они не сработали. У кого-нибудь есть способ сделать это.
Итак, набор данных, который у меня сейчас есть, выглядит следующим образом

 Col0    Col1    Col2     job
11       02     ahn    Marketing
22       05     ghdf   Sales
58       058    syg    Sales
68       085    sdhj   Finance
86       088    sgx    Marketing
55       08     dyy    IT
 

И результат, который я хочу получить, должен выглядеть так

 Col0    Col1    Col2     job        job15
11       02     ahn    Marketing     Marketing
22       05     ghdf    Sales        Sales
58       058    syg     Sales        Sales
68       085    sdhj   Finance       Null
86       088    sgx    Marketing     Marketing
55       08     dyy      IT          Null
 

Ответ №1:

попробуйте groupby:

 import pandas as pd
import numpy as np
# sample data
dat = np.random.randint(0,20,size=1000).reshape((500,2))
df= pd.DataFrame(data=dat, columns=['A','countA'])

# aggregation with groupby on any "filled" column
aggr = df.groupby('A').count().sort_values(by='countA', ascending=False)

aggr = aggr.reset_index()

best15 = aggr[:15]
 

Комментарии:

1. Спасибо за ваш ответ, но теперь я прояснил свой вопрос и добавил пример