如何高效计算Pandas DataFrame指定行和以填充空行?
高效填充DataFrame指定行的方法
核心思路
利用Pandas的向量化操作替代Python循环,既简洁又能大幅提升效率——Pandas的内置方法都是底层优化过的,比逐行逐列的循环处理快得多。
实现代码
# 计算B0和B2行数值列的和 b_total = step4_1[step4_1['ISIC2'].isin(['B0', 'B2'])] \ .select_dtypes(include='number') \ .sum() # 将求和结果赋值给B1行对应的列 step4_1.loc[step4_1['ISIC2'] == 'B1', b_total.index] = b_total.values
代码说明
isin(['B0', 'B2']):精准筛选出需要求和的两行,不受行索引位置影响(哪怕B0/B2不在B1的前后也能生效)select_dtypes(include='number'):只对2018-2021这类数值列求和,避免操作ISIC2这类文本列sum():按列批量求和,是Pandas优化后的向量操作,效率远高于循环loc:精准定位到ISIC2为"B1"的行,直接批量赋值求和结果
对比原方案的优势
原代码的嵌套循环会逐行逐列遍历处理,当DataFrame行数/列数较多时,效率会急剧下降;而向量化操作是一次性批量处理所有目标列,性能提升非常明显,代码也更易读维护。
内容的提问来源于stack exchange,提问作者DGMS89
相关产品推荐
相关产品推荐

