繁体   English   中英

如何根据该列中每个类的平均值填充熊猫中每列的 nan 值

[英]How to fill nan values of each column in pandas with respect to the average of each class in that column

我在熊猫中有一个数据集(比如两个类)。

 index | length | weight | label 
-------|--------|--------|-------
   0       1         2       0
   1       2         3       0
   2      nan        4       0
   3       6        nan      0
   4       30        40      1
   5       45        35      1
   6       18       nan      1

df.fillna(df.mean())返回一个数据帧,其中每个 nan 由每列的平均值填充。 但我想用它的类的平均值填充每列中的每个 nan,因此索引 2 处的长度将为 3。输出是这样的:

 index | length | weight | label 
-------|--------|--------|-------
   0       1         2       0
   1       2         3       0
   2       3         4       0
   3       6         3       0
   4       30        40      1
   5       45        35      1
   6       18       37.5     1

是否有一个简单的功能或者我应该自己实现它?

GroupBy.transformmean用于辅助数据Dataframe ,每个组的mean并传递给fillna

df = df.fillna(df.groupby('label').transform('mean')) 
print (df)
   length  weight  label
0     1.0     2.0      0
1     2.0     3.0      0
2     3.0     4.0      0
3     6.0     3.0      0
4    30.0    40.0      1
5    45.0    35.0      1
6    18.0    37.5      1 

详情

print (df.groupby('label').transform('mean'))
   length  weight
0     3.0     3.0
1     3.0     3.0
2     3.0     3.0
3     3.0     3.0
4    31.0    37.5
5    31.0    37.5
6    31.0    37.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM