Pandas重置索引后列值变回NaN的问题及异常填充情况
问题解决方法
问题原因
你执行ps0pyc.fillna(method='ffill')时,Pandas默认返回填充后的新DataFrame副本,不会修改原ps0pyc对象。所以你看到的填充结果只是临时输出,原数据仍保留NaN值,执行reset_index后自然会再次显示NaN。而后续用axis=1填充是横向按行填充,会把同一行的日期值填到PORTVAL列,这完全不符合需求。
正确解决步骤
有两种方式可以确保填充结果被保存:
- 将填充结果重新赋值给原变量
# 填充NaN并覆盖原变量 ps0pyc = ps0pyc.fillna(method='ffill') # 重置索引 ps0pyc.reset_index(inplace=True)
- 使用
inplace=True参数直接修改原数据
# 直接在原DataFrame上填充NaN ps0pyc.fillna(method='ffill', inplace=True) # 重置索引 ps0pyc.reset_index(inplace=True)
补充说明
fillna默认的axis=0是纵向按列填充,这正是你需要的向前填充逻辑,不需要手动指定axis参数。- 重置索引操作不会影响已经填充好的数据,只要先确保填充结果被保存到原变量即可。
内容的提问来源于stack exchange,提问作者swagdevotee008
相关产品推荐
相关产品推荐

