使用字典提高 Pandas 系列中值替换的性能
使用字典替换 Pandas 系列中的值是一项常见任务。虽然建议使用 s.replace(d) 替换值,但它可能比使用简单的列表理解要慢得多。
性能缓慢的原因
性能缓慢s.replace(d) 的作用源于它对边缘情况和罕见情况的处理。它涉及:
替代方法
要提高性能,请考虑使用以下方法:
基准测试
基准测试展示了 s.replace(d), s 之间的性能差异.map(d) 和列表理解:
##### Full Map ##### d = {i: i+1 for i in range(1000)} %timeit df['A'].replace(d) # Slow (1.98s) %timeit df['A'].map(d) # Fast (84.3ms) ##### Partial Map ##### d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # Intermediate (20.1ms) %timeit df['A'].map(d).fillna(df['A']).astype(int) # Faster (111ms)
这表明对于完整或部分映射,s.map(d) 始终比 s.replace(d) 更快。
结论
取决于字典覆盖的完整性, s.map(d) 或 s.map(d).fillna(s['A']).astype(int) 应该优先于s.replace(d) 用于 Pandas 系列中的高效值替换。
以上是为什么使用字典替换 Pandas 系列中的值很慢,如何提高性能?的详细内容。更多信息请关注PHP中文网其他相关文章!