为何Pandas中Lambda函数无法填充Date列的NaN值?
问题原因
你这段代码不生效的核心原因是:np.nan无法通过==运算符判断。在Python中,np.nan == np.nan的返回值是False,所以你的lambda表达式里的条件永远不会触发,自然没法把NaN替换成'1'。
正确解决方案
推荐优先使用pandas原生的缺失值处理方法,效率更高且代码更简洁:
方法1:使用fillna(最推荐)
这是pandas专门为填充缺失值设计的方法,直接指定填充值即可:
df['Date'] = df['Date'].fillna('1')
方法2:修正apply的判断逻辑
如果一定要用apply,需要用专门的缺失值判断函数pd.isna()(兼容所有数据类型)或者np.isnan()(仅适用于数值类型):
import pandas as pd df['Date'] = df['Date'].apply(lambda d: '1' if pd.isna(d) else d)
方法3:使用replace
可以直接把所有np.nan替换为目标值:
df['Date'] = df['Date'].replace(np.nan, '1')
内容的提问来源于stack exchange,提问作者Sik Sik
相关产品推荐
相关产品推荐

