我有一个包含值和一些NaN的数据框。现在我有了列的平均值,我想将特定列的平均值插入NaN值。例如:
ColA and ColB have NaN to be replaced with the value of mean I have
我对ColA和ColB表示平均值。我想将它们插入NaN位置。我可以使用replace方法单独进行操作。但是对于许多专栏,还有其他方法可以实现这一目标吗?
答案 0 :(得分:0)
编辑:
如果已经有了Series with means,则只能使用DataFrame.fillna
:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,np.nan,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,np.nan,1,0],
'E':[np.nan,3,6,np.nan,2,4],
'F':list('aaabbb')
})
means = pd.Series([10,20], index=['B','E'])
df= df.fillna(means)
print (df)
A B C D E F
0 a 4.0 7 1.0 20.0 a
1 b 10.0 8 3.0 3.0 a
2 c 4.0 9 5.0 6.0 a
3 d 5.0 4 NaN 20.0 b
4 e 5.0 2 1.0 2.0 b
5 f 4.0 3 0.0 4.0 b
如果需要替换所有数字列中的缺失值,请使用mean
用DataFrame.fillna
-因为mean
排除了非数字列,所以起作用了
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,np.nan,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,np.nan,1,0],
'E':[np.nan,3,6,np.nan,2,4],
'F':list('aaabbb')
})
df1 = df.fillna(df.mean())
print (df1)
A B C D E F
0 a 4.0 7 1.0 3.75 a
1 b 4.4 8 3.0 3.00 a
2 c 4.0 9 5.0 6.00 a
3 d 5.0 4 2.0 3.75 b
4 e 5.0 2 1.0 2.00 b
5 f 4.0 3 0.0 4.00 b
如果需要将列指定为均值,则仅更改列名称列表的解决方案:
cols = ['D','B']
df[cols] = df[cols].fillna(df[cols].mean())
print (df)
A B C D E F
0 a 4.0 7 1.0 NaN a
1 b 4.4 8 3.0 3.0 a
2 c 4.0 9 5.0 6.0 a
3 d 5.0 4 2.0 NaN b
4 e 5.0 2 1.0 2.0 b
5 f 4.0 3 0.0 4.0 b
答案 1 :(得分:-1)
对于要填充的列尝试此操作。
if( copy2.disciples_ )
{
this->disciples_ = make_shared<Ninja>();
this->disciples_->name_ = copy2.disciples_->name_;
this->disciples_->disciples_= copy2.disciples_->disciples_;
}
else
{
this->disciples_ = copy2.disciples_;
}