如何高效为大型Pandas DataFrame的每行添加Series?
高效实现DataFrame逐行添加Series的方法
你的循环写法效率低是因为逐行操作没用到Pandas的向量化优化,Python级别的循环处理大型数据集时会带来巨大性能开销。直接用Pandas的广播机制就能解决,代码简单且速度极快:
最优实现
直接对整个DataFrame执行加法操作,Pandas会自动把Series diff 广播到每一行:
print(df.shape) # (31676, 3562) diff = 4.1 - df.iloc[0] df += diff # 原地修改原DataFrame,内存更高效 # 要是不想改动原DataFrame,就用: # new_df = df + diff
为什么这个方法更快?
- Pandas的向量化操作是底层用C实现的,避开了Python循环的解释器开销
- 广播机制会自动匹配Series和DataFrame的列,不用手动遍历每一行,处理大型数据集时性能能提升几十甚至上百倍
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

