[英]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.transform
与mean
用于辅助数据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.