Добавить столбец с со средней зарплатой по специальностям
Есть DataFrame, нужно добавит столбец.
import pandas as pd
data = {'name': ['Vinay', 'Kushal', 'Aman', 'Rahui',
'Ramesh'],
'occ': ['engineer', 'doctor', 'engineer', 'doctor', 'doctor'],
'salary': [60000, 70000, 50000, 60000, 65000]}
df = pd.DataFrame(data)
print(df, '\n')
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Если нужен именно столбец, то группируем по специальности и используем метод transform('mean')
:
data = {'name': ['Vinay', 'Kushal', 'Aman', 'Rahui',
'Ramesh'],
'occ': ['engineer', 'doctor', 'engineer', 'doctor', 'doctor'],
'salary': [60000, 70000, 50000, 60000, 65000]}
df = pd.DataFrame(data)
df['mean_salary'] = df.groupby('occ').salary.transform('mean')
print(df)
name occ salary mean_salary
0 Vinay engineer 60000 55000.0
1 Kushal doctor 70000 65000.0
2 Aman engineer 50000 55000.0
3 Rahui doctor 60000 65000.0
4 Ramesh doctor 65000 65000.0
Если же нужно просто среднее по специальностям, то можно через сводную таблицу (агрегирующая функция по умолчанию - 'mean'):
data = {'name': ['Vinay', 'Kushal', 'Aman', 'Rahui',
'Ramesh'],
'occ': ['engineer', 'doctor', 'engineer', 'doctor', 'doctor'],
'salary': [60000, 70000, 50000, 60000, 65000]}
df = pd.DataFrame(data)
df = df.pivot_table(index='occ', values='salary')
print(df)
salary
occ
doctor 65000.0
engineer 55000.0