我正在从python 2升级到python3。我正在使用read_csv
的一个文件使我得到一个MemoryError
,可以解决它,但是现在出现了一个新错误。
我从这里How to read a 6 GB csv file with pandas尝试了一些建议,但仍然出现错误:TypeError: 'TextFileReader' object is not subscriptable
我缩小了列的范围并增加了块大小。我的.txt文件现在是50k kb。
这个错误附近有吗?谢谢。
e1 = pd.read_csv(working_dir+"E1.txt",sep=',', chunksize = 10000)
e1['MTM'] = e1['stack_over_flow']
回溯:
Traceback (most recent call last):
File "<ipython-input-97-99e71d524b4b>", line 1, in <module>
runfile('C:/AppData/FinRecon/py_code/python3/DataJoin.py', wdir='C:/AppData/FinRecon/py_code/python3')
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\anaconda3_32bit\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
execfile(filename, namespace)
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\anaconda3_32bit\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/AppData/FinRecon/py_code/python3/DataJoin.py", line 474, in <module>
M2()
File "C:/AppData/FinRecon/py_code/python3/DataJoin.py", line 42, in M2
e1['MTM'] = e1['stack_over_flow']
TypeError: 'TextFileReader' object is not subscriptable
答案 0 :(得分:0)
解决此问题的一种方法是在nrows
函数中设置pd.read_csv()
参数,然后选择要加载到数据框中的数据子集。当然,缺点是您将无法查看和使用完整的数据集。代码示例:
e1 = pd.read_csv(working_dir+"E1.txt", sep=',', nrows=100000)
此外,如果您想按块读取文件并进行处理,则可以查看pandas docs,因此您可以通过执行以下操作来实现此目的:
e1 = pd.read_csv(working_dir+"E1.txt", sep=',', chunks=10000)
for chunk in e1:
print(chunk)