低计算量填充Pandas DataFrame缺失类型行的方法问询
低计算量的Pandas DataFrame缺失行补充方案
核心思路
利用Pandas的MultiIndex重索引功能,直接生成包含所有周(wmy)与所有类型(N、O、D)的完整索引组合,再将原始数据对齐到该索引上,缺失值自动填充为0。这种方法避免了多次合并与循环操作,计算效率更高。
优化代码实现
import pandas as pd # 假设原始数据存储在df中 required_types = ['N', 'O', 'D'] # 生成包含所有wmy和类型的完整MultiIndex full_index = pd.MultiIndex.from_product( [df['wmy'].unique(), required_types], names=['wmy', 'type'] ) # 重置原始数据索引,重对齐到完整索引,填充缺失值为0 result = df.set_index(['wmy', 'type']) \ .reindex(full_index, fill_value=0) \ .reset_index()
关键优势对比
- 计算效率更高:无需多次
merge和循环遍历,完全依赖Pandas的向量化操作,处理大数据集时性能提升明显。 - 代码更简洁:仅需几行代码完成逻辑,可读性和可维护性更强。
- 避免手动拼接:无需拆分数据框再合并,减少出错概率(比如你原代码中把
O写成了0的笔误也能避免)。
内容的提问来源于stack exchange,提问作者Trunk
相关产品推荐
相关产品推荐

