写入输出pandas.io.解析器.TextFileReader到Pandas.DataFram

2024-06-17 16:09:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的CSV文件,我正在读取它,使用用户定义的输入“num\u rows”(行数)在部分块中,使用“chunksize”参数,它返回pandas.io.解析器.TextFileReader”对象,如下所示:

num_rows = int(input("Enter number of rows to be processed

chunk = pd.read_csv("large_file.csv", chunksize = number_of_rows)

for data_chunk in chunk:
    # some processing
    # Finally, write back results to Pandas DataFrame-
    data_chunk["new_column"] = some_precalculated_value

然而,这种方法显然行不通。如何将块的结果写回原来的Pandas数据帧,在我的例子中,这个数据帧恰好是“大的”_文件.csv"? 你知道吗

谢谢!你知道吗


Tags: 文件ofcsvto数据用户numberpandas
1条回答
网友
1楼 · 发布于 2024-06-17 16:09:58

您所做的不会修改csv,因为每个data_chunk都没有链接到原始数据。
您可以将每个data_chunk写入一个单独的csv文件

reader = pd.read_csv("large_file.csv", chunksize = number_of_rows)

for i, data_chunk in enumerate(reader):
    data_chunk["new_column"] = some_precalculated_value
    data_chunk.to_csv("large_file_part{}.csv".format(i))

要使用数据帧之类的大于内存的数据,可以使用dask。如果你做到了以上几点,那么你只需要做:

import dask.dataframe as dd

ddf = dd.read_csv("large_file_part*.csv")
ddf.to_csv("large_file.csv", single_file=True)

或者,您可以先用dask加载数据帧,然后用它进行计算。
它自动地将数据帧分割成分区,并以一种惰性的方式执行操作,就像它是一个普通的数据帧一样。你知道吗

相关问题 更多 >