我正在尝试读取和过滤一个csv文件块,然后将结果放入一个dataframe。
下面是我用于读取和过滤csv的内容:
csv_chunks = pandas.read_csv(filepath, sep = DELIMITER,skiprows = 2, chunksize = 1000, converters = {"A": str, "B": str})
for chunk in csv_chunks:
chunk = chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]当我去把这些块连在一起
df = pandas.concat(chunk for chunk in csv_chunks)我说错了
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\tools\merge.py
", line 872, in concat
verify_integrity=verify_integrity)
File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\tools\merge.py
", line 913, in __init__
raise Exception('All objects passed were None')
Exception: All objects passed were None有几个块是空的,但是也有非空的,所以不确定哪些对象被看作是空的。任何想法都欢迎!
谢谢,安妮
发布于 2013-07-12 16:57:21
尝试:
csv_chunks = [chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]
for chunk in csv_chunks]
df = pandas.concat(csv_chunks)密码
for chunk in csv_chunks:
chunk = chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]可能没有按你的意愿去做。在for-loop的每次迭代中,for chunk in csv_chunks在csv_chunks中将一个项分配给chunk。然后,
chunk = chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]立即将重新分配一个新值给chunk。很好,但这不会改变csv_chunks中的项。您只是在某个自变量chunk中旋转这个值。
要修改csv_chunks中的值,可以使用列表理解来构建一个新列表,然后将其重新分配给变量csv_chunks。
csv_chunks = [chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]
for chunk in csv_chunks]https://stackoverflow.com/questions/17619460
复制相似问题