首页 > 解决方案 > 在导入为熊猫数据框之前从压缩的 csv 文件中获取标头

问题描述

我正在尝试将 csv 文件作为 pandas 数据框导入,其中 csv 文件位于 zip 文件中。为了有效导入,我试图先获取标题,然后再将其加载到熊猫数据框中。

到目前为止,我尝试的是:

from zipfile import ZipFile
from io import TextIOWrapper
import pandas as pd

with ZipFile(zip_path, 'r') as zipfile:
    with zipfile.open(file_path, 'r') as file:
        reader = csv.reader(TextIOWrapper(file, 'utf-8', newline=''))
        headers = next(reader)

        df = pd.read_csv(file)

问题是当我得到带有next(reader)基础文件的标题时,该文件被导入为没有标题的熊猫数据框。

真的很感激任何修复。

标签: pythonpandascsvzip

解决方案


您可以使用函数 seek() 重置 CSV 迭代器:

with ZipFile('test.zip', 'r') as zipfile:
    with zipfile.open('test.csv', 'r') as file:
        reader = csv.reader(TextIOWrapper(file, 'utf-8', newline=''))
        headers = next(reader)
        # reset CSV iterator
        file.seek(0)
        df = pd.read_csv(file)

推荐阅读