我有一个具有以下格式的“CSV”数据文件(嗯,它是一个 TSV):
事件 pdg xyzt px py pz ekin 3383 11 -161.515 5.01938e-05 -0.000187112 0.195413 0.664065 0.126078 -0.736968 0.00723234 1694 11 -161.515 -0.000355633 0.000263174 0.195413 0.511853 -0.523429 0.681196 0.00472714 4228 11 -161.535 6.59631e-06 -3.32796e-05 0.194947 -0.713983 -0.0265468 -0.69966 0.0108681 4233 11 -161.515 -0.000524488 6.5069e-05 0.195413 0.942642 0.331324 0.0406377 0.017594
该文件可按原样解释pandas
:
from pandas import read_csv, read_table
data = read_csv("test.csv", sep="\t", index_col=False) # Works
data = read_table("test.csv", index_col=False) # Works
但是,当我尝试读取它blaze
(声明使用 pandas 关键字参数)时,会引发异常:
from blaze import Data
Data("test.csv") # Attempt 1
Data("test.csv", sep="\t") # Attempt 2
Data("test.csv", sep="\t", index_col=False) # Attempt 3
这些都不起作用,pandas 根本没有使用。试图推断列名和类型的“嗅探器”只是csv.Sniffer.sniff()
从标准库调用(失败)。
有没有办法在 blaze 中正确读取这个文件(鉴于它的“小兄弟”有几百 MB,我想使用 blaze 的顺序处理能力)?
感谢您的任何想法。
编辑:我认为这可能是 odo/csv 的问题并提出了问题:https ://github.com/blaze/odo/issues/327
Edit2: 完全错误:
() ----> 1 bz.Data("test.csv", sep="\t", index_col=False) 中的错误回溯(最后一次调用) /home/[username-hidden]/anaconda3/lib/python3.4/site-packages/blaze/interactive.py in Data(data, dshape, name, fields, columns, schema, **kwargs) 54 如果是实例(数据,_strtypes): 55 数据=资源(数据,模式=模式,dshape=dshape,列=列, ---> 56 **kwargs) 57 if (isinstance(data, Iterator) 和 58 不是实例(数据,元组(not_an_iterator))): /home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/regex.py in __call__(self, s, *args, **kwargs) 62 63 def __call__(self, s, *args, **kwargs): ---> 64 返回 self.dispatch(s)(s, *args, **kwargs) 65 66 @属性 /home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in resource_csv(uri, **kwargs) 第276章 第277章 --> 278 返回 CSV(uri, **kwargs) 279 280 /home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in __init__(self, path, has_header, encoding, sniff_nbytes, **kwargs) 102 如果 has_header 为无: 103 self.has_header = (不是 os.path.exists(path) 或 --> 104 infer_header(路径, sniff_nbytes)) 105 其他: 106 self.has_header = has_header /home/[username-hidden]/anaconda3/lib/python3.4/site-packages/odo/backends/csv.py in infer_header(path, nbytes, encoding, **kwargs) 58 with open_file(path, 'rb') as f: 59 原始 = f.read(nbytes) ---> 60 返回 csv.Sniffer().has_header(raw if PY2 else raw.decode(encoding)) 61 62 /home/[username-hidden]/anaconda3/lib/python3.4/csv.py in has_header(self, sample) 392 # 从第一行作为标题的可能性中减去。 393 --> 394 rdr = reader(StringIO(sample), self.sniff(sample)) 395 396 header = next(rdr) # 假设第一行是标题 /home/[username-hidden]/anaconda3/lib/python3.4/csv.py in sniff(self, sample, delimiters) 187 188 如果不是分隔符: --> 189 引发错误(“无法确定分隔符”) 190 191类方言(方言): 错误:无法确定分隔符