熊猫|根据它们所属的类别将平均填充到单元格

时间:2019-10-06 03:19:05

标签: python pandas csv dataframe

以下是示例数据框:

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 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

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