【发布时间】:2018-06-05 13:07:18
【问题描述】:
以下代码在 Python3 中有效,但在 Python2 中失败
r = requests.get("http://api.bitcoincharts.com/v1/csv/coinbaseUSD.csv.gz", stream=True)
decompressed_file = gzip.GzipFile(fileobj=r.raw)
data = pd.read_csv(decompressed_file, sep=',')
data.columns = ["timestamp", "price" , "volume"] # set df col headers
return data
我在 Python2 中遇到的错误如下:
TypeError: 'int' object has no attribute '__getitem__'
错误出现在我设置数据等于 pd.read_csv(...) 的那一行
对我来说似乎是熊猫错误
堆栈跟踪:
Traceback (most recent call last):
File "fetch.py", line 51, in <module>
print(f.get_historical())
File "fetch.py", line 36, in get_historical
data = pd.read_csv(f, sep=',')
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 709, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 449, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 818, in __init__
self._make_engine(self.engine)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1049, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/local/lib/python2.7/dist-packages/pandas/io/parsers.py", line 1695, in __init__
self._reader = parsers.TextReader(src, **kwds)
File "pandas/_libs/parsers.pyx", line 562, in pandas._libs.parsers.TextReader.__cinit__
File "pandas/_libs/parsers.pyx", line 760, in pandas._libs.parsers.TextReader._get_header
File "pandas/_libs/parsers.pyx", line 965, in pandas._libs.parsers.TextReader._tokenize_rows
File "pandas/_libs/parsers.pyx", line 2197, in pandas._libs.parsers.raise_parser_error
io.UnsupportedOperation: seek
【问题讨论】:
-
我无法在 python2 上重现此错误。请提供完整的回溯,以便我们可以查看此问题的确切根源。我只能说某处正在尝试索引
int,而这正是TypeError异常所抱怨的。 -
始终将完整的 Traceback 放在 qiestion 中。还有其他有用的信息。
-
你可以显示
decompressed_file看看你得到了什么 -
@Abdou 堆栈跟踪已更新
标签: python python-2.7 pandas python-requests gzip