Вы можете попробовать следующий подход с модулем zipfile
:
import zipfile
with zipfile.ZipFile("Desktop.zip") as z:
data = z.read("pandas_test_data.csv").decode("utf-8-sig")
lines = (elem for elem in data.split("\r\n"))
# lines = (elem for elem in data.split("\n")) if you're csv contains \n instead of \r\n
rows_of_data = (elem.split(",") for elem in lines)
df = pd.DataFrame(rows_of_data)
Вы считываете данные один раз, а затем просто создаете генераторы для последующих шагов. Генераторы могут использоваться конструктором класса pandas DataFrame.
Примечание. Я добавил decode("utf-8-sig")
, поскольку при чтении файлов Zip я столкнулся с символами UTF-BOM.