我有大量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()
并在.split()
上使用file_content
,但将所有GB保存到单个变量然后拆分效率会很低。是否可以在“块”中执行此操作?
答案 0 :(得分:1)
<input pattern="^(|>=\d+$|<=\d+$|>\d+$|<\d+$|\d+$|<> \d+$|<> \d+ to \d+$|\d+ to \d+)$">
<script>
var input = document.querySelector("input[pattern]")
input.onfocus = input.oninput = function() {
this.classList.toggle("clear", this.value.length === 0)
}
</script>
支持read_csv()
ped文件,因此您只需执行以下操作:
GZIP
如果您确定自己拥有TSV( TAB 分隔文件),则可以使用for chunk in pd.read_csv('/path/to/file.csv.gz', sep='\s*', chunksize=10**5):
# process chunk DF