如何用NaN填充Pandas Series缺失值(避免循环)
解决方案
核心思路
通过生成目标连续数值范围,利用Pandas的reindex方法高效对齐原Series数据,缺失值自动填充为NaN,全程无需循环,保证执行效率。
代码实现
import pandas as pd import numpy as np # 定义原Series s = pd.Series([2.0, 3.0, 4.0, 5.0, 7.0, 8.0, 9.0], index=[1, 2, 3, 4, 5, 6, 7]) # 生成从最小值到最大值的连续数值序列(步长1.0) target_values = np.arange(s.min(), s.max() + 1, 1.0) # 以原Series的值为索引构建新Series,再重新索引到目标序列,缺失值自动填充NaN aligned_series = pd.Series(s.values, index=s.values).reindex(target_values) # 转换为numpy数组(若需要Series则直接使用aligned_series即可) result_array = aligned_series.values
输出结果
执行后result_array的值为:
np.array([2.0, 3.0, 4.0, 5.0, np.nan, 7.0, 8.0, 9.0])
关键说明
np.arange(s.min(), s.max()+1, 1.0):精准生成从原Series最小值到最大值的连续浮点数列,确保覆盖所有预期值。reindex:Pandas内置的高效对齐方法,底层基于向量化操作,比循环效率高得多,缺失的索引值(此处为6.0)会自动填充NaN。
内容的提问来源于stack exchange,提问作者maroke
相关产品推荐
相关产品推荐

