【发布时间】:2016-06-27 18:07:46
【问题描述】:
我正在使用numpy.fromfile 构造一个数组,我可以将它传递给pandas.DataFrame 构造函数
import numpy as np
import pandas as pd
def read_best_file(file, **kwargs):
'''
Loads best price data into a dataframe
'''
names = [ 'time', 'bid_size', 'bid_price', 'ask_size', 'ask_price' ]
formats = [ 'u8', 'i4', 'f8', 'i4', 'f8' ]
offsets = [ 0, 8, 12, 20, 24 ]
dt = np.dtype({
'names': names,
'formats': formats,
'offsets': offsets
})
return pd.DataFrame(np.fromfile(file, dt))
我想扩展此方法以处理压缩文件。
根据numpy.fromfile文档,第一个参数是file:
file : file or str Open file object or filename
因此,我添加了以下内容来检查 gzip 文件路径:
if isinstance(file, str) and file.endswith(".gz"):
file = gzip.open(file, "r")
但是,当我尝试通过 fromfile 构造函数传递它时,我得到一个 IOError:
IOError: first argument must be an open file
问题:
如何使用 gzip 压缩文件调用 numpy.fromfile?
编辑:
根据 cmets 中的请求,显示检查 gzip 文件的实现:
def read_best_file(file, **kwargs):
'''
Loads best price data into a dataframe
'''
names = [ 'time', 'bid_size', 'bid_price', 'ask_size', 'ask_price' ]
formats = [ 'u8', 'i4', 'f8', 'i4', 'f8' ]
offsets = [ 0, 8, 12, 20, 24 ]
dt = np.dtype({
'names': names,
'formats': formats,
'offsets': offsets
})
if isinstance(file, str) and file.endswith(".gz"):
file = gzip.open(file, "r")
return pd.DataFrame(np.fromfile(file, dt))
【问题讨论】:
-
我们需要确切了解检查是如何实施的。
-
@TheBlackCat 在返回语句之前插入这两行。
-
您能否显示完整的代码,并带有正确的缩进?
-
@TheBlackCat 正确缩进是什么意思 - 缩进是正确的
-
您能否编辑您的问题以显示您所做更改的完整代码。