Pandas|根据它们所属的类别将平均值填入单元格

2024-05-08 16:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是示例数据帧:

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 

Tags: nameidp2salaryp3o2p5p1
1条回答
网友
1楼 · 发布于 2024-05-08 16:31:36

您可以尝试以下方法:

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作为其他值。接下来,fillnagroupbytransformmean

相关问题 更多 >

    热门问题