了解 Pandas 中 s.replace 和其他值替换方法之间的性能差距
使用字典替换 Pandas 系列中的值是一个共同任务。然而,与列表推导等替代方法相比,s.replace(此操作的推荐方法)通常表现出明显较慢的性能。
s.replace 缓慢的根本原因
s.replace 除了简单的字典映射之外还执行其他处理。它处理边缘情况和罕见情况,这需要更复杂和耗时的操作。具体来说,s.replace 将字典转换为列表,检查嵌套字典,并迭代列表以将键和值提供给单独的替换函数。这种开销会显着减慢流程。
优化值替换
要优化值替换,应遵循以下准则:
基准测试
基准测试结果显示了各种替换方法之间的性能差异:
测试 1 - 完整地图
%timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms %timeit [d[i] for i in lst] # 134ms
测试 2 - 部分地图
%timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms %timeit [d.get(i, i) for i in lst] # 243ms
这些结果清楚地表明 s.map 及其修改后version 的执行速度明显快于 s.replace,尤其是当字典键覆盖了大部分系列值时。
以上是为什么 Pandas 的 `s.replace` 基于字典的值替换速度很慢?的详细内容。更多信息请关注PHP中文网其他相关文章!