【发布时间】:2022-01-19 20:18:47
【问题描述】:
我有一个巨大的压缩文件,我有兴趣在其中读取各个数据帧,以免内存不足。
另外,由于时间和空间的关系,我无法解压.tar.gz。
这是我到目前为止得到的代码:
import pandas as pd
# With this lib we can navigate on a compressed files
# without even extracting its content
import tarfile
import io
tar_file = tarfile.open(r'\\path\to\the\tar\file.tar.gz')
# With the following code we can iterate over the csv contained in the compressed file
def generate_individual_df(tar_file):
return \
(
(
member.name, \
pd.read_csv(io.StringIO(tar_file.extractfile(member).read().decode('ascii')), header=None)
)
for member in tar_file
if member.isreg()\
)
for filename, dataframe in generate_individual_df(tar_file):
# But dataframe is the whole file, which is too big
尝试了How to create Panda Dataframe from csv that is compressed in tar.gz?,但仍然无法解决...
【问题讨论】:
-
你看过this吗?我很确定有一种方法可以一次只解压缩特定文件。
-
您可以避免使用 pandas read_csv 使用 chunksize 参数将完整文件加载到内存中,您可以在其中指定要加载到内存中的记录数。
标签: python python-3.x pandas csv tar