根据文档,fillna
value
参数可以是以下之一:
value : scalar, dict, Series, or DataFrame
Value to use to fill holes (e.g. 0), alternately a dict/Series/DataFrame of values specifying which value to use for each index (for a Series) or column (for a DataFrame). (values not in the dict/Series/DataFrame will not be filled). This value cannot be a list.
我有一个看起来像这样的数据框:
PassengerId Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 892 3 Kelly, Mr. James male 34.5 0 0 330911 7.8292 NaN Q
1 893 3 Wilkes, Mrs. James (Ellen Needs) female 47.0 1 0 363272 7.0000 NaN S
2 894 2 Myles, Mr. Thomas Francis male 62.0 0 0 240276 9.6875 NaN Q
3 895 3 Wirz, Mr. Albert male 27.0 0 0 315154 8.6625 NaN S
4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female 22.0 1 1 3101298 12.2875 NaN S
这就是我想要做的:
- NaN Cabin 将根据给定 Pclass 特征值的中值填充
- NaN 年龄将根据其在整个数据集中的中值填充
- NaN Embarked 将根据给定 Pclass 特征值的中值填充
所以经过一些数据操作,我得到了这个数据框:
Pclass Cabin Embarked Ticket
0 1 C S 50
1 2 F S 13
2 3 G S 5
它说的是Pclass == 1
最常见Cabin
的是C
. 鉴于此,在我的原始数据框中,df
我想df['Cabin'] == null
用C
.
这是一个小例子,我可以手动处理每个可能的空组合:
df_both[df_both['Pclass'] == 1 & df_both['Cabin'] == np.NaN] = 'C'
但是,我想知道我是否可以使用这个派生的数据框来自动完成所有这些填充。
谢谢你。