Pandas如何补全Series连续索引并将缺失索引值填充为0?
Pandas Series 连续索引补全填充实现方案
问题场景
现有初始Pandas Series对象:
import pandas as pd s = pd.Series(1, index=[1,2,3,5,6,9,10])
需要将索引调整为1到10的连续序列,原索引缺失的4、7、8位置填充值为0,目标输出如下:
s = pd.Series([1,1,1,0,1,1,0,0,1,1], index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
最优实现方法
直接使用Pandas内置的reindex方法,指定目标索引范围和缺失填充值即可,一行代码完成操作:
s = s.reindex(index=range(1, 11), fill_value=0)
实现说明
reindex会自动对齐新旧索引:原索引存在的位置保留原始值,新索引中存在但原索引缺失的位置,会按照fill_value指定的值填充,这里设为0正好匹配需求。- 执行后可直接打印验证结果,和目标Series完全一致:
1 1 2 1 3 1 4 0 5 1 6 1 7 0 8 0 9 1 10 1 dtype: int64
备选实现逻辑
如果需要更直观的分步逻辑,也可以先创建全0的目标索引Series,再用原数据覆盖对应位置,效果完全相同:
s_new = pd.Series(0, index=range(1, 11)) s_new.update(s) s = s_new
该方法逻辑易懂,但数据量较大时性能略低于直接调用reindex。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

