如何快速读取CSV文件的单个数据块?pandas优化方案咨询
快速读取pandas CSV单个数据块的正确姿势
嘿,这个问题我太懂了!你之前用pd.concat的方式相当于把整个文件的所有块都读进来再合并,自然和直接读全文件耗时差不多——完全没必要这么做。
其实你拿到的TextFileReader对象本身就自带了直接获取单个数据块的方法,一步到位,速度超快:
- 先初始化迭代器对象:
reader = pd.read_csv('./input/test.csv', iterator=True, chunksize=1000)
- 直接调用
get_chunk()方法获取单个数据块:
# 获取chunksize指定大小的单个块 single_chunk = reader.get_chunk() # 或者自定义要获取的块大小(比如你之前试的25行) small_chunk = reader.get_chunk(25)
这样得到的single_chunk/small_chunk直接就是DataFrame类型,而且只加载了你需要的那一部分数据,完全不会读取整个文件,耗时会大幅降低。
如果你的需求是获取特定位置的块(比如第3个块),可以简单循环跳过前面的块:
reader = pd.read_csv('./input/test.csv', iterator=True, chunksize=1000) # 跳过前2个块 for _ in range(2): reader.get_chunk() # 获取第3个块 target_chunk = reader.get_chunk()
记住,pd.concat是用来把所有块合并成完整DataFrame的,如果你只需要单个块,直接用get_chunk()就好啦!
内容的提问来源于stack exchange,提问作者CIsForCookies
相关产品推荐
相关产品推荐

