为什么在索引上合并 Pandas 中的数据帧比在列上合并数据帧更有效(更快)?
import pandas as pd
# Dataframes share the ID column
df = pd.DataFrame({'ID': [0, 1, 2, 3, 4],
'Job': ['teacher', 'scientist', 'manager', 'teacher', 'nurse']})
df2 = pd.DataFrame({'ID': [2, 3, 4, 5, 6, 7, 8],
'Level': [12, 15, 14, 20, 21, 11, 15],
'Age': [33, 41, 42, 50, 45, 28, 32]})
df = df.set_index('ID')
df2 = df2.set_index('ID')
这相当于大约 3.5 倍的速度提升! (使用熊猫0.23.0)
阅读通过Pandas 内部页面 https://pandas.pydata.org/pandas-docs/stable/internals.html它说索引“将标签字典填充到 Cython 中的位置以进行 O(1) 查找”。这是否意味着使用索引进行操作比使用列进行操作更有效?始终使用索引进行合并等操作是否是最佳实践?
我通读了加入和合并的文档 https://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging并且它没有明确提及使用索引的任何好处。