代码之家  ›  专栏  ›  技术社区  ›  William

pandas chunksize如何分割块并直接跳入目标块

  •  0
  • William  · 技术社区  · 3 年前

    我有一个大文件,我使用pandas chunksize将其拆分为大约500个块:

      index=0  
      for df_ia in pd.read_csv("/path/to/file/file.TXT", chunksize=100000,iterator=True, low_memory=False):
            index += 1
            if index < 500:
                continue
            elif index > 560:
                break
    

    问题是,正如代码所示,如果我想去第500块做一些逻辑,我需要从第一块开始,逐块,直到第500块,这大约需要200秒,然后我可以做一些真正的逻辑。

    我的问题是,有没有什么方法可以分割块,直接跳到块500来做逻辑,比如:

    for df_ia in pd.read_csv("/path/to/file/file.TXT", chunksize=100000,iterator=True, low_memory=False):
    if chunk_index ==500:
       do logic
    

    或者类似于:

    for df_ia in pd.read_csv("/path/to/file/file.TXT", chunksize=100000,iterator=True, low_memory=False , chunk[500:]):
    

    注意,我使用了切片块[500:]

    1 回复  |  直到 3 年前
        1
  •  1
  •   jezrael    3 年前

    IIUC使用 skiprows 用于省略前499个块的参数,用于不删除头的参数是use np.arange :

    n = 100000
    for i, df_ia in enumerate(pd.read_csv("/path/to/file/file.TXT", 
                              chunksize=n, 
                              skiprows = np.arange(1, 500 * n + 1),
                              iterator=True, 
                              low_memory=False)):
        if i == 0:
            #do logic