Pandas合并DataFrame后用.loc替换字符串遇NaN报错求解决方案
解决合并DataFrame后字符串替换的NaN掩码错误
问题根源
合并得到的final_df中,CustName列存在NaN值,str.contains()遇到NaN会返回NaN,而loc的布尔掩码不允许包含非布尔值(NaN),因此触发ValueError。
直接修复方案
在str.contains()里添加na=False参数,将NaN直接判定为False,确保掩码全为布尔值:
final_df.loc[final_df['CustName'].str.contains('bbb', case=False, na=False), 'CustomerName'] = 'Big Boy Booty'
备选处理方式
如果需要先清理空值,可先将NaN填充为空字符串再执行替换:
# 填充CustName列的NaN为空字符串 final_df['CustName'] = final_df['CustName'].fillna('') # 执行替换操作 final_df.loc[final_df['CustName'].str.contains('bbb', case=False), 'CustomerName'] = 'Big Boy Booty'
内容的提问来源于stack exchange,提问作者uncrayon
相关产品推荐
相关产品推荐

