Python 连接数据帧-传递的所有对象均为无

Python 连接数据帧-传递的所有对象均为无,python,pandas,Python,Pandas,我试图读取并过滤一个csv文件,然后将结果放入一个数据帧中 以下是我用于读取和过滤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

我试图读取并过滤一个csv文件,然后将结果放入一个数据帧中

以下是我用于读取和过滤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
有几个块是空的,但也有非空的,所以不确定哪些对象被视为无。欢迎有任何想法

谢谢, 安妮

试试:

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循环时,
for chunk in csv_chunks
csv_chunks
中的一个项目分配给
chunk
。那么

chunk = chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]
立即将新值重新分配给
。很好,但这不会更改
csv\u块中的项目。您只是在一些自变量中旋转值,
chunk

要修改
csv_chunks
中的值,您可以使用列表理解来构建一个新的列表,然后将该列表重新分配给变量
csv_chunks

csv_chunks = [chunk[(chunk["B"] + chunk["A"]).isin(acids.tolist())]
              for chunk in csv_chunks]

非常感谢你,这似乎很管用。我习惯C++,所以容易被指针所困扰和通过值/引用传递,我认为这并不太适合描述Python是如何工作的。在上述情况下,我如何知道我是在创建一个副本,还是在指向实际对象?