10GB程度のテキストファイルをpandasで読み取りたいです。
以下のように書いたのですが、エラーが出てしまいます。
python
1import csv 2import pandas as pd 3from pandas import Series 4 5listA = ["A1", "A2", "A3", "A5", "A8"] 6listB = ["B2", "B3", "B4", "B5", "B6"] 7def preprocess(x): 8 x = x[x['vA'].isin(listA)] 9 x = x[x['vB'].isin(listB)] 10 return x 11reader = pd.read_csv(filepath_or_buffer = "~/bigDataDB.txt", encoding="ms932", sep="\t", dtype={0: str} , chunksize=20000, skiprows=164, low_memory = False) 12mylist = [] 13for r in reader: 14 mylist.append(preprocess(r)) 15df = pd.concat(mylist, axis=0) 16print(df)
erorr
1ParserError Traceback (most recent call last) 2<ipython-input-2-f831367281dd> in <module> 3 4~/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in __next__(self) 5 6~/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in get_chunk(self, size) 7 8~/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in read(self, nrows) 9 10~/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in read(self, nrows) 11 12pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read() 13 14pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows() 15 16pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows() 17 18pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error() 19 20ParserError: Error tokenizing data. C error: out of memory
他にエラー"low_memory = False"を削除したり、mylistにappendせず直接結合したりもしましたが、駄目でした。
python
1df = pd.concat((preprocess(r) for r in reader), ignore_index=True)
目盛自体はfreeが101 GBあるので足りるものと思っているのですが。
回答1件
あなたの回答
tips
プレビュー