我希望将dataframe的列值替换为另一列分组后的平均值(去除0值)。
dataframe df 如下:
ID | TYPE | rate
-------------
1 | A | 0 <- Replace this
2 | B | 2
3 | C | 1
4 | A | 2
5 | C | 1
6 | C | 0 <- Replace this
7 | C | 8
8 | C | 2
9 | D | 0 <- Replace this
我必须替换评分中值为0的数值:
df['rate'][df['rate']==0] = ?
对于该类型,平均值为:
每种类型的平均(除零外)值为:
A = 2/1 = 2
B = 2/1 = 2
C = (1 + 1 + 8 + 2)/4 = 3
D = 0(当没有类型信息时,默认值为0)
期望结果:
ID | TYPE | rate
-------------
1 | A | 2 <- Changed
2 | B | 2
3 | C | 1
4 | A | 2
5 | C | 1
6 | C | 3 <- Changed
7 | C | 8
8 | C | 2
9 | D | 0 <- Changed
df['rate'][df['rate']==0] = ...
时要小心,最好使用df.loc[df['rate']==0, 'rate'] = ...
,详见这里。 - IanS