我大约有600个腌制的DataFrame。每个DataFrame包含一列,其中每个条目对应于“大型强子对撞机”中特定探测器的标识号(ID)。
600个腌制的数据帧中的每一个都包含大约12000行(以及大约10000个不同的检测器ID)。
我想做的是遍历所有600个腌制的DataFrame,并创建新的DataFrame,以使每个新的DataFrame对应于不同的检测器ID。例如最后我可能有
df_ID1
df_ID2
...
df_ID10000
然后在每个数据帧中,我可以访问有关每个检测器的信息。
当前,我正在使用以下方法(请参见下文)。我创建一个空的DataFrames字典,每个键对应于检测器ID。我的第一个循环是遍历所有600个腌制文件的循环。我的内部循环是遍历字典中的每个键,在这里我仅将已打开的腌制DataFrame中具有正确粒子ID的行连接起来。
IDs = [7791,26323] #an example of two different detector IDs
DFS = [pd.DataFrame(columns=COLUMNS)]*len(IDs) #start with empty DataFrames
DFS_DICT = dict(zip(IDs, DFS)) #Create a dictionary
for (i,filename) in enumerate(os.listdir(READ_PATH)):
if filename.endswith(".pkl"):
opened_df = pd.read_pickle(READ_PATH+filename)
for id in DFS_DICT:
DFS_DICT[id] = pd.concat([DFS_DICT[id], opened_df[opened_df['HwidCell']==id]])
del opened_df
我知道这是O(N ^ 2)时间,理想情况下,我希望它运行得更快。