熊猫TypeError:“ TextFileReader”对象不可下标

时间:2019-08-19 19:59:06

标签: python python-3.x

我正在从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

1 个答案:

答案 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)