0
我讀一個CSV文件,然後做一些篩選:列表迭代改變原來的列表,以無
csv_chunks = pandas.read_csv(filepath, sep = DELIMITER,skiprows = 2, chunksize = 1000, converters = {"A": str, "B": str})
csv_chunks_new = [chunk[(chunk["A"] + chunk["B"]).isin(acids.tolist())]
for chunk in csv_chunks]
奇怪的是,當我現在嘗試把csv_chunks成數據幀
df = pandas.concat(chunk for chunk in csv_chunks)
我得到以下錯誤:
Exception: All objects passed were None
所以我雖然重新分配濾波的結果一個新的對象(csv_c hunks_new),它似乎也改變了csv_chunks。任何想法可能會發生什麼?
感謝, 安妮
非常感謝Martijn。只是爲了確保我理解這一點 - 何時正在讀取文件?在創建迭代器的時候,還是在迭代器被使用的時候? – Anne
當使用迭代器時,*推測*;理論上可能的'pandas.read_csv()'打開文件,將所有數據讀入內存,然後在循環遍歷迭代器時生成數據,但這不太可能,效率也很低。 –
@Anne:查看[源代碼](https://github.com/pydata/pandas/blob/master/pandas/io/parsers.py),看到你指定了塊大小,結論是文件正在讀取,因爲使用迭代器。 –