使用字典提高 Pandas 系列中值替換的表現
使用字典替換 Pandas 系列中的值是一項常見任務。雖然建議使用 s.replace(d) 替換值,但它可能比使用簡單的列表理解慢得多。
表現緩慢的原因
表現緩慢s.replace(d) 的作用源自於它對邊緣情況和罕見情況的處理。它涉及:
替代方法
要提高效能,請考慮使用以下方法:
部分映射:如果字典僅映射一小部分(例如,小於5%)值,請使用s.map(d ).fillna(s['A']). astype(int).這種方法將映射與填充相結合,避免了昂貴的迭代。
基準測試##### 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.replace(d), s 之間的性能差異.map(d) 和列表理解:
這表示對於完整或部分映射,s.map(d) 始終比s.replace(d) 更快。
結論取決於字典覆蓋的完整性, s.map(d) 或s.map(d).fillna(s['A']) .astype(int) 應該優先於s.replace(d) 用於Pandas 系列中的高效值替換。以上是為什麼使用字典替換 Pandas 系列中的值很慢,如何提升效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!