如何使用 `.split()` 从大型 `gzip` 文件中导入制表符分隔的文本?块?
How to use `.split()` for importing tab-delimited text from a large `gzip` file? Chunks?
我有巨大的 gzip
制表符分隔文本文件(几 GB),我想将其解析为 pandas 数据框。
如果此文件的内容是文本,则只需使用 .split()
,例如
file_text = """abc 123 cat 456 dog 678 bird 111 fish ...
moon 1969 revolution 1789 war 1927 reformation 1517 maxwell ..."""
data = [line.split() for line in file_text.split('\n')]
然后您可以使用
将数据放入 pandas 数据帧
import pandas as pd
df = pd.DataFrame(data)
但是,这不是文本文档。它是一个以制表符分隔的 gzip 文件,包含几 GB 的数据。使用 .split()
将此数据解析为数据帧的最有效方法是什么?
我想第一步是使用
import gzip
with gzip.open(filename, 'r') as f:
file_content = f.read()
并在 file_content
上使用 .split()
,但将所有 GB 保存到单个变量然后拆分会效率低下。是否可以在 "chunks" 中执行此操作?
read_csv()
支持 GZIP
ped 文件,因此您可以简单地执行以下操作:
for chunk in pd.read_csv('/path/to/file.csv.gz', sep='\s*', chunksize=10**5):
# process chunk DF
如果你确定你有一个 TSV(TAB 分隔文件),你可以使用 sep='\t'
我有巨大的 gzip
制表符分隔文本文件(几 GB),我想将其解析为 pandas 数据框。
如果此文件的内容是文本,则只需使用 .split()
,例如
file_text = """abc 123 cat 456 dog 678 bird 111 fish ...
moon 1969 revolution 1789 war 1927 reformation 1517 maxwell ..."""
data = [line.split() for line in file_text.split('\n')]
然后您可以使用
将数据放入 pandas 数据帧import pandas as pd
df = pd.DataFrame(data)
但是,这不是文本文档。它是一个以制表符分隔的 gzip 文件,包含几 GB 的数据。使用 .split()
将此数据解析为数据帧的最有效方法是什么?
我想第一步是使用
import gzip
with gzip.open(filename, 'r') as f:
file_content = f.read()
并在 file_content
上使用 .split()
,但将所有 GB 保存到单个变量然后拆分会效率低下。是否可以在 "chunks" 中执行此操作?
read_csv()
支持 GZIP
ped 文件,因此您可以简单地执行以下操作:
for chunk in pd.read_csv('/path/to/file.csv.gz', sep='\s*', chunksize=10**5):
# process chunk DF
如果你确定你有一个 TSV(TAB 分隔文件),你可以使用 sep='\t'