如何根据另一列的条件替换一列的NaN值?

时间:2019-07-24 07:55:18

标签: python pandas replace conditional-statements nan

我想根据另一列的条件替换一列中的np.nan值。而且,我想用一个字符串替换np.nan值:

我已经尝试过使用np.where,但是出现错误“语法无效”,而且我真的看不到语法错误。

casualty_data["age_band_of_casualty"] = np.where(casualty_data["age_of_casualty"]>0 & casualty_data["age_of_casualty"]<=5, "0-5", continue)
                  age_of_casualty   age_band_of_casualty                    
Accident_Index                                  
2016010000005       23                    21-25     
2016010000006       38                    Nan   
2016010000008       24                    21-25 
2016010000016       58                    Nan   
2016010000018       28                    26-35

我要从此表中获得以下输出:

                  age_of_casualty   age_band_of_casualty                    
Accident_Index                                  
2016010000005       23                    21-25     
2016010000006       38                    36-45     
2016010000008       24                    21-25 
2016010000016       58                    56-65 
2016010000018       28                    26-35

谢谢!

2 个答案:

答案 0 :(得分:1)

casualty = casualty_data['age_of_casualty']
replacing_values = (casualty-2).map(str) + '-' + (casualty+2).map(str)
casualty_data["age_band_of_casualty"].fillna(replacing_values)

答案 1 :(得分:0)

我本来应该添加一条评论,但是由于缺乏声誉,所以必须在此处写评论。尝试在表达式中添加括号:

casualty_data["age_band_of_casualty"] = np.where((casualty_data["age_of_casualty"]>0) & (casualty_data["age_of_casualty"]<=5), "0-5", continue)

应该有帮助。