我正在读取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_chunks_new),但它似乎也更改了csv_chunks。你知道可能发生了什么吗?
谢谢你,安妮
发布于 2013-07-16 20:55:46
csv_chunks不是一个列表,它本身是一个迭代器。通过循环遍历所有元素,您已经耗尽了迭代器。当您再次循环遍历它时,它不再返回元素,并且pandas.concat()会报错,因为它被传递了一个空序列。
只需重新创建对象:
csv_chunks = pandas.read_csv(filepath, sep = DELIMITER,skiprows = 2, chunksize = 1000, converters = {"A": str, "B": str})它返回一个新的迭代器。
https://stackoverflow.com/questions/17677073
复制相似问题