在多个数据帧中搜索和排序

2024-05-14 22:15:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约600个数据帧。每个数据帧包含一列,其中每个条目对应于大型强子对撞机中特定探测器的标识号(ID)。你知道吗

600个pickle数据帧中的每一个都包含大约12000行(以及大约10000个不同的检测器id)。你知道吗

我想做的是遍历所有600个pickle数据帧,并创建新的数据帧,这样每个新的数据帧对应于不同的检测器ID

df_ID1
df_ID2
...
df_ID10000

然后在每个数据帧中,我可以访问每个探测器的信息。你知道吗

目前我正在使用以下方法(见下文)。我创建了一个空数据帧字典,其中每个键对应于检测器ID。我的第一个循环是一个循环,遍历所有600个pickle文件。我的内部循环是通过dictionary中的每个键,在这里我只连接打开的pickled 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)时间,理想情况下我希望它跑得更快。你知道吗


Tags: 数据ididsdataframedfdictionaryfilename检测器

热门问题