如何将pandas DataFrame中NaN替换为empty_row并解决ValueError报错
问题原因
- 你写的
df['col2'] == 'NaN'返回的是一整列布尔值的Series对象,if语句只能判断单个布尔值的真假,无法对整个Series做判断,因此触发了ValueError。 - pandas中的NaN是空值类型,不是字符串
'NaN',用字符串匹配无法正确识别空值,同时注意列名大小写敏感,你代码里写的col2和实际列名Col2不匹配也会导致后续报错。
解决方案
方法1:使用fillna直接替换空值(推荐)
fillna是pandas专门用来处理空值替换的接口,一行代码即可完成需求:
df['Col2'] = df['Col2'].fillna('empty_row')
方法2:使用loc条件定位赋值
如果需要搭配更复杂的条件判断逻辑,可以用loc定位到空值行再赋值:
df.loc[df['Col2'].isna(), 'Col2'] = 'empty_row'
你可以用下面的代码测试效果:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ 'Col1': ['A1', 'A2', 'A3', 'A4', 'A5', 'A6'], 'Col2': ['finished', 'ongoing', np.nan, 'finished', 'started', np.nan], 'Col3': [1234, 1235, 1236, 1237, 1238, 1239] }) # 替换空值 df['Col2'] = df['Col2'].fillna('empty_row') print(df)
运行后输出结果和你期望的完全一致。
内容的提问来源于stack exchange,提问作者disukumo
相关产品推荐
相关产品推荐

