Python 读取大(2GB)csv时忽略标题

Python 读取大(2GB)csv时忽略标题,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我试图用pandas读取一个相当大的CSV(2GB),以进行一些数据类型操作,并与我以前加载的其他数据帧连接。因为我想在记忆方面稍微小心一点,所以我决定分块阅读。为了回答这些问题,这里摘录了我的CSV布局和虚拟数据(抱歉,无法真正共享真实数据!): 我的pandas代码用于读取文件: inst_map = pd.read_csv("data/hugefile.csv", engine="python",

我试图用pandas读取一个相当大的CSV(2GB),以进行一些数据类型操作,并与我以前加载的其他数据帧连接。因为我想在记忆方面稍微小心一点,所以我决定分块阅读。为了回答这些问题,这里摘录了我的CSV布局和虚拟数据(抱歉,无法真正共享真实数据!):

我的pandas代码用于读取文件:

inst_map = pd.read_csv("data/hugefile.csv",
                       engine="python",
                       chunksize=1000000,
                       index_col=False)

print("processing institution chunks")

chunk_list = []  # append each chunk df here
for chunk in inst_map:
    # perform data filtering
    chunk['person_id'] = chunk['person_id'].progress_apply(zip_check)
    chunk['institution_id'] = chunk['institution_id'].progress_apply(zip_check)

    # Once the data filtering is done, append the chunk to list
    chunk_list.append(chunk)

ins_processed = pd.concat(chunk_list)
我正在应用的
zip check
函数基本上是执行一些数据类型检查,然后将得到的值转换为整数

每当我读取CSV时,它只会读取
机构id
列并生成索引。CSV中的其他列只是默默地删除

当我不使用index_col=False作为选项时,它只会将
1141414141/4141/JOHN/SMITH/0.7
(基本上是行中的前5个值)设置为索引,并且只将
institution_id
作为标题,同时只将
institution_name
作为值读取到数据帧中


老实说,我不知道这里发生了什么,经过2个小时的SO/谷歌搜索,我决定把这个作为一个问题来问。希望有人能帮助我,谢谢

问题是,将大型CSV文件传输到我的远程处理服务器(该服务器有足够的RAM来处理内存编辑)时出现了一些问题。在本地计算机上处理数据块似乎很有效


重新加载文件后,它在远程服务器上运行良好。

问题是,将大型CSV文件传输到我的远程处理服务器(该服务器有足够的RAM来处理内存中的编辑)时出现了问题。在本地计算机上处理数据块似乎很有效


重新加载文件后,它在远程服务器上工作正常。

我无法重现您的问题。我似乎也有类似的问题。当我只是将数据的一个子集复制到一个新文件中时,问题并没有出现,这让我相信这是csv的格式问题。您知道什么格式错误会导致pandas以我上面描述的方式读取csv吗?请尝试将块大小设置为较小的值,可能为10。另外,在for循环中添加一个枚举数,并在几个循环之后停止。然后看看你是否也遇到同样的问题。如果没有,则继续增加停止点,直到再现错误。这至少会缩小问题在文件中的位置。看起来,即使我只使用10的块大小,整个数据帧也会像前面描述的那样中断。我怀疑CSV文件本身一定有问题。奇怪的是,无论我使用什么工具(CSViewer),它都能正常工作。只有熊猫给了我麻烦。我想我必须对这个文件本身进行更多的调查。更新:谢谢@James!问题是,将大的CSV文件传输到我的远程处理服务器(该服务器有足够的RAM来处理内存中的编辑)时出现了问题。在本地计算机上处理数据块似乎很有效。我想我将不得不重新加载较大的文件或尝试不同的处理方法。我无法重现您的问题。我似乎有类似的问题。当我只是将数据的一个子集复制到一个新文件中时,问题并没有出现,这让我相信这是csv的格式问题。您知道什么格式错误会导致pandas以我上面描述的方式读取csv吗?请尝试将块大小设置为较小的值,可能为10。另外,在for循环中添加一个枚举数,并在几个循环之后停止。然后看看你是否也遇到同样的问题。如果没有,则继续增加停止点,直到再现错误。这至少会缩小问题在文件中的位置。看起来,即使我只使用10的块大小,整个数据帧也会像前面描述的那样中断。我怀疑CSV文件本身一定有问题。奇怪的是,无论我使用什么工具(CSViewer),它都能正常工作。只有熊猫给了我麻烦。我想我必须对这个文件本身进行更多的调查。更新:谢谢@James!问题是,将大的CSV文件传输到我的远程处理服务器(该服务器有足够的RAM来处理内存中的编辑)时出现了问题。在本地计算机上处理数据块似乎很有效。我想我必须重新加载较大的文件或尝试不同的处理方法。
inst_map = pd.read_csv("data/hugefile.csv",
                       engine="python",
                       chunksize=1000000,
                       index_col=False)

print("processing institution chunks")

chunk_list = []  # append each chunk df here
for chunk in inst_map:
    # perform data filtering
    chunk['person_id'] = chunk['person_id'].progress_apply(zip_check)
    chunk['institution_id'] = chunk['institution_id'].progress_apply(zip_check)

    # Once the data filtering is done, append the chunk to list
    chunk_list.append(chunk)

ins_processed = pd.concat(chunk_list)