在多少列之后,熊猫'set_index'函数不再有用?



据我了解,将set_index函数与特定列一起使用的优点是允许基于值直接访问行。只要您知道该值,就无需使用类似loc的内容进行搜索,从而减少了操作的运行时间。Pandas 还允许您使用此函数将多个列设置为索引。我的问题是,这些索引在多少列之后不再有价值?如果我将数据帧中的每一列都指定为索引,我是否仍然会看到索引行的速度比使用loc搜索的速度更快?

将所有内容设置为索引的真正缺点深埋在 Pandas 的高级索引文档中:索引可以更改被设置为索引的列的 dtype。我希望您在实现预期的性能优势之前遇到此问题。

至于这种性能优势,您需要在构造Series对象时预先支付索引费用,无论您是否显式设置它们。AFAIK Pandas默认索引所有内容。正如杰克·范德普拉斯(Jake VanderPlas)在他的优秀著作中所说:

如果 Series 是具有灵活索引的一维数组的模拟

,则 DataFrame 是具有灵活行索引和灵活列名的二维数组的模拟。正如您可能将二维数组视为对齐的一维列的有序序列一样,您可以将 DataFrame 视为对齐的 Series 对象的序列。在这里,"对齐"是指它们共享相同的索引。 ——Jake VanderPlas,《Python Data Science Handbook

因此,将某些内容设置为索引的原因是为了使您更轻松地处理数据或支持数据访问模式,而不一定像数据库索引那样用于性能优化。

最新更新