【问题标题】:Replacing NaN values with desired values in one column according to class (1,2,3) in another column根据另一列中的类 (1,2,3) 将 NaN 值替换为一列中的所需值
【发布时间】:2020-09-01 09:54:06
【问题描述】:

我正在使用fillna() 函数根据“Pclass”列中的给定类替换“Age”列中的NaN 值。我使用的代码成功运行,没有任何错误,但是数据集中没有变化。那里存在相同的NaN 值。我的代码如下。

train_data['Age'][train_data['Pclass']==1].fillna(38, inplace=True)
train_data['Age'][train_data['Pclass']==2].fillna(29, inplace=True)
train_data['Age'][train_data['Pclass']==3].fillna(24, inplace=True)

【问题讨论】:

  • 您在原始数据集的切片上fillnaing。
  • 还有其他推荐的方法吗?

标签: python pandas


【解决方案1】:

这是因为您在数据集切片上填充 na。所以尽管使用inplace,原始数据集不会改变。

仅使用 for 循环的一种方式:

# train_data
   Age  Pclass
0  NaN       1
1  NaN       2
2  NaN       3

for p, v in zip([1,2,3], [38, 29, 24]):
    train_data.loc[train_data["Pclass"].eq(p), "Age"] = train_data.loc[train_data["Pclass"].eq(p), "Age"].fillna(v)
print(train_data)

输出:

    Age  Pclass
0  38.0       1
1  29.0       2
2  24.0       3

【讨论】:

    猜你喜欢
    • 2015-12-31
    • 2020-10-27
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2019-03-28
    相关资源
    最近更新 更多