панды |заполнить среднее число ячеек на основе категорий, к которым они принадлежат - PullRequest
0 голосов
/ 06 октября 2019

Вот пример кадра данных:

ID     Name       occupation   salary
1      p1             O1        1000
2      p2             O2        2000
3      p3             O3        4000
4      p4             O1        1500
5      p5             O1        
6      p6             O2        2100 
7      p7             O1        -9999
8      p8             O2         

Как я могу обнаружить все недопустимые значения (пропущенные и отрицательные зарплаты) и заполнить средние зарплаты принадлежащих им профессий этим ячейкам?

Выход:

ID     Name       occupation   salary
1      p1             O1        1000
2      p2             O2        2000
3      p3             O3        4000
4      p4             O1        1500
5      p5             O1        1250
6      p6             O2        2100 
7      p7             O1        1250
8      p8             O2        2050 

1 Ответ

1 голос
/ 06 октября 2019

Вы можете попробовать это:

sal=df['salary'].where(df['salary'].gt(0))
df['salary'] = sal.fillna(sal.groupby(df['occupation']).transform('mean'))
df

Вывод:

   ID Name occupation  salary
0   1   p1         O1  1000.0
1   2   p2         O2  2000.0
2   3   p3         O3  4000.0
3   4   p4         O1  1500.0
4   5   p5         O1  1250.0
5   6   p6         O2  2100.0
6   7   p7         O1  1250.0
7   8   p8         O2  2050.0

Подробности, используйте where, чтобы вернуться только к «действительной» (больше нуля) зарплате, и введитеNaN для других значений. Далее fillna с groupby, transform, mean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...