Python 使用值的DataFrame填充NA

Python 使用值的DataFrame填充NA,python,pandas,fillna,Python,Pandas,Fillna,根据文档,fillnavalue参数可以是以下参数之一: 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). (value

根据文档,
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舱室将根据给定Pclass特征值的中值填充
  • NaN Age将根据其在整个数据集的中值进行填充
  • 将根据给定的Pclass特征值的中值填充
  • 经过一些数据处理,我得到了这个数据帧:

        Pclass  Cabin   Embarked    Ticket
    0   1   C   S   50
    1   2   F   S   13
    2   3   G   S   5
    
    它说的是,对于
    Pclass==1
    来说,最常见的
    cab
    C
    。鉴于此,在我的原始数据帧
    df
    中,我想用
    C
    填充每个
    df['cab']==null

    这是一个小示例,我可以手动将每个可能的空组合处理为:

    df_both[df_both['Pclass'] == 1 & df_both['Cabin'] == np.NaN] = 'C'
    
    但是,我想知道是否可以使用这个派生的数据帧来自动完成所有这些填充


    谢谢。

    如果您想用中位数或特定列的平均值之类的内容填充所有的Nan,您可以执行以下操作

    中位数:

    df.fillna(df.median())
    
    卑鄙

    df.fillna(df.mean())
    
    有关更多信息,请参阅

    编辑:

    或者,您可以使用具有指定值的词典。键需要映射到列名。通过这种方式,还可以对字符串中缺少的值进行插补

    df.fillna({'col1':'a','col2': 1})
    

    如果您想用特定列的中位数或平均值之类的内容填充所有Nan,您可以执行以下操作

    中位数:

    df.fillna(df.median())
    
    卑鄙

    df.fillna(df.mean())
    
    有关更多信息,请参阅

    编辑:

    或者,您可以使用具有指定值的词典。键需要映射到列名。通过这种方式,还可以对字符串中缺少的值进行插补

    df.fillna({'col1':'a','col2': 1})