pandas 中 .at 和 .loc 的时间复杂度是多少?

Pet*_*erg 7 python performance time-complexity data-structures pandas

我正在寻找这些方法的时间复杂度作为数据帧中行数 n 的函数。

提出这个问题的另一种方式是:pandas btree 中数据帧的索引(具有 log(n) 时间查找)还是哈希表(具有恒定时间查找)?

提出这个问题是因为我想要一种基于自定义索引对数据框中的行进行恒定时间查找的方法。

Pet*_*erg 4

好吧,这样看来:

1)您可以在 O(n) 时间内使用 .set_index 在数据帧上构建自己的索引,其中 n 是数据帧中的行数

2) 当您第一次尝试使用该索引访问行时,索引会被延迟初始化和构建(在 O(n) 时间内)。因此,第一次使用该索引访问一行需要 O(n) 时间

3) 所有后续行访问都需要常数时间

所以看起来索引是哈希表而不是 btree。

  • 使用我构建的自定义索引访问具有约 10M 行的数据帧中的第一行大约需要 3 秒。此后的一切都花费了几毫秒。多次目睹这种行为。˙\\_(ツ)_/˙ (2认同)