我有一个具有以下格式的“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类方言(方言):
错误:无法确定分隔符