Python Pandas按指定日期范围填充DataFrame中X列NaN值失败如何解决
问题根因
你使用了链式索引写法,该场景下pandas会返回原数据的临时副本而非视图,fillna的inplace=True参数仅修改了这个临时副本,不会作用到原DataFrame,因此出现无报错但数据未更新的情况。
最优实现方案
使用loc索引直接操作原DataFrame,避免副本问题,同时简化逻辑:
import datetime # 提前存储过滤条件,避免重复计算 date_filter = df['Date'] < datetime.date(2017, 1, 1) # 直接对符合条件的X列空缺值赋值 df.loc[date_filter, 'X'] = df.loc[date_filter, 'X'].fillna(1)
该实现的优势:
- 完全规避链式索引的副本问题,修改直接生效到原数据
- 过滤条件单独抽离,代码可读性更高
- 无冗余的重复数据切片操作,执行效率更优
内容的提问来源于stack exchange,提问作者Asaf
相关产品推荐
相关产品推荐

