使用df.replace()无法替换DataFrame中的nan字符串问题求助
解决DataFrame中缺失值无法用
replace('nan', 0)替换的问题 问题原因
你用data.replace('nan', 0)是在替换字符串类型的'nan',但DataFrame里的nan实际是Python的缺失值类型(比如numpy.nan或pd.NA),并非字符串,所以这个方法无法匹配到目标值。
解决方案
方法1:用fillna()直接填充缺失值
这是pandas处理缺失值的标准方法,专门针对np.nan/pd.NA类型的缺失值:
# 直接替换所有缺失值为0(修改原DataFrame) data.fillna(0, inplace=True) # 或者不修改原DataFrame,返回新对象 data = data.fillna(0)
方法2:同时处理字符串'nan'和缺失值
如果数据里同时存在字符串'nan'和缺失值,先把字符串转成缺失值再统一填充:
# 先将字符串'nan'转为缺失值,再替换为0 data = data.replace('nan', pd.NA).fillna(0)
方法3:读取文件时提前处理
在读取CSV时直接把字符串'nan'识别为缺失值,后续一步填充:
file = 'RAO.txt' # 读取时指定na_values,将字符串'nan'转为缺失值 data = pd.read_csv(file, sep="\t", header=None, skiprows=1, na_values=['nan']) data = data.drop(data.columns[-1], axis=1).fillna(0)
内容的提问来源于stack exchange,提问作者WUYing
相关产品推荐
相关产品推荐

