添加平均值按列分组的列

时间:2019-06-04 12:19:29

标签: python pandas

我想用另一列分组的列的均值(不带零)替换数据帧的列值。

数据框 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] = ?

具有该 TYPE 的平均值。

每种类型的

Average(不带零)值是:

  

A = 2/1 = 2

     

B = 2/1 = 2

     

C =(1 +1 + 8 + 2)/ 4 = 3

     

D = 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

1 个答案:

答案 0 :(得分:3)

您可以mask数据框中的rate列,GroupBy TYPEtransformmean,这将排除{ {1}}。使用fillna替换蒙版数据框中的值:

NaNs
相关问题