首页 > 解决方案 > Pandas 基于另一列值的条件填充

问题描述

我正在研究 bigmart 数据集,我想根据另一列的值替换一列的缺失值,实际上:

     Outlet_Size  sales_bin
0         Medium  3000-4000
1         Medium     0-1000
2         Medium  2000-3000
3            NaN     0-1000
4           High     0-1000
...          ...        ...
8518        High  2000-3000
8519         NaN     0-1000
8520       Small  1000-2000
8521      Medium  1000-2000
8522       Small     0-1000

So if train[“Outlet_Size”] value is a NaN and train[“sales_bin”] is  “0-1000”
train[“Outlet_Size”] value shoud become “Small”
else == Medium

但是我真的不知道怎么写,而且我发现的所有信息都让我感到困惑

有可能做到吗?如何?

非常感谢

标签: pythonpandasdataframeconditional-statementsnan

解决方案


用于Series.isna创建布尔掩码,然后使用np.where+从并基于条件Series.eq选择选项equals :SmallMediumsales_bin0-1000

m = df['Outlet_Size'].isna()
df.loc[m, 'Outlet_Size'] = np.where(df.loc[m, 'sales_bin'].eq('0-1000'), 'Small', 'Medium')

结果:

print(df)
     Outlet_Size  sales_bin
0         Medium  3000-4000
1         Medium     0-1000
2         Medium  2000-3000
3          Small     0-1000
4           High     0-1000
8518        High  2000-3000
8519       Small     0-1000
8520       Small  1000-2000
8521      Medium  1000-2000
8522       Small     0-1000

推荐阅读