如何使代码在速度方面更有效率

How to make code more efficient in terms of speed

假设我们有一个名为 pickle_list.pkl 的 pickle 文件,其中包含 23 个 pandas 数据帧。 df_combined 也是所有这些数据帧的串联。假设df_combined的形状是(1000000, 5000)。 运行 以下代码块是否有更有效的方法?也许某种类型的并行化可以工作?

现在它在第 69000 行,已经 运行 一天了。

import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)

for row in df_combined.itertuples():
    print(row.Index)
    id = row.id
    df_test= df_combined[df_combined['id']==str(id)]

您可以使用 groupby 高效地创建字典,然后用于快速获取所需的标识符。这是一个未经测试的例子来展示这个想法:

import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)

all_groups = {ident:df for ident,df in df_combined.groupby('id')}

for row in df_combined.itertuples():
    id = row.id
    # You may need to add a condition before if the searched ID does not exist
    df_test = all_groups[str(id)]