如何将不同索引的Series fc的值填充到fc_series的NaN位置?
解决方案:处理不同索引的Pandas Series值替换问题
问题根源
你遇到的问题是Pandas的索引对齐机制导致的:fc的索引是数字序列,而test_data.index是日期序列,两者没有匹配的索引标签,所以直接用pd.Series(fc, index=test_data.index)创建新Series时,Pandas找不到对应匹配项,结果还是全NaN。
具体解决方法
因为两个Series长度完全一致(都是638),可以用以下几种方式绕过索引对齐,直接赋值:
方法1:直接赋值底层值(最简便)
直接提取fc的数值数组,赋值给fc_series,完全忽略索引:# 直接覆盖fc_series的现有值 fc_series[:] = fc.values # 或者直接创建新的fc_series fc_series = pd.Series(fc.values, index=test_data.index)方法2:重置索引后匹配
先把fc的索引重置为默认的连续整数,再替换成目标日期索引:# 重置fc的索引,丢弃原有数字索引 fc_reset = fc.reset_index(drop=True) # 替换为日期索引 fc_series = fc_reset.set_axis(test_data.index)方法3:用update/combine_first(适合后续有非NaN值的场景)
如果之后fc_series可能存在非NaN值需要保留,可以用update方法(会用新值覆盖NaN):fc_series.update(fc.reset_index(drop=True))或者
combine_first(优先保留原Series的值,用新值填充NaN):fc_series = fc.reset_index(drop=True).combine_first(fc_series)
内容的提问来源于stack exchange,提问作者Aayush Kaushal
相关产品推荐
相关产品推荐

