相关疑难解决方法(0)

pandas DataFrame.join 的运行时间(大“O”顺序)是多少?

这个问题更具概念性/理论性(与非常大的数据集的运行时间有关),所以我很抱歉没有一个最小的例子来展示。

我有一堆来自两个不同传感器的数据帧,我需要最终将它们连接成来自两个不同传感器(和)的两个非常大的数据帧,然后左连接成一个数据帧。我的数据是这样的,我也可以先加入,然后连接,或某种组合。我试图找出最有效的方法来做到这一点。df_snsr1df_snsr2

通过阅读这个 SO 答案,我知道它会pandas.concat为其所有数据帧的串联分配空间,如果您在循环中执行此操作,则可能会导致O(N**2)复制和一些主要的减速。因此,我目前首先构建一个大的数据帧列表(从文件加载),一次连接它们,然后加入两个大数据帧:

df_list = []
for file in my_pickle_files_snsr1:  # O(M) loop over M files
    df_list.append(pd.read_pickle(file))  # O(1) append, M times
df_snsr1 = pd.concat(df_list)  # O(N) copies of N records
# repeat for sensor 2 (df_snsr2)
df_snsr1.join(df_snsr2, on=['some', 'columns'])  # O(dunno, maybe bears?)
Run Code Online (Sandbox Code Playgroud)

我无法在pandas.DataFrame.join. 是O(N)吗?O(N**2)? 我的想法是,如果它的顺序与 相似pandas.concat,那么我执行这两个操作的顺序真的无关紧要。O(N**2)但是,如果是,那么加入许多小数据帧然后连接对我来说可能会更有效他们而不是 concat 然后加入。整个操作需要足够长的时间,值得我在这里提出问题,所以“运行它并查看”是行不通的。

有人知道join正在使用什么算法以及它的执行大 O 顺序是什么吗?或者有人对获得最有效的join和组合有任何其他建议concat …

python big-o execution-time dataframe pandas

7
推荐指数
1
解决办法
954
查看次数

标签 统计

big-o ×1

dataframe ×1

execution-time ×1

pandas ×1

python ×1