以下是示例数据框:
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
答案 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用作其他值。接下来,fillna
和groupby
,transform
,mean
。