使用python优化向CSV文件(~300GB)添加列

2024-06-14 20:37:45 发布

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

我想在CSV文件中添加一列,这是同一文件中其他两列的差异,我使用python(pandas)来实现这一点,我就是这么做的:

import pandas as pd
row = ['times1','times2']
for df1 in pd.read_csv('C:/SET/parti_no_diff.CSV',skipinitialspace=True, usecols=row, chunksize=10**7):
    df1['time_difference'] = (df1['times2'].astype('datetime64[s]')-df1['times1'].astype('datetime64[s]')).abs()
    df1.to_csv('E:/SET/parti_with_diff_seconds.csv',mode='a')

我用的机器内存12GB,外置硬盘2TB(5200RPM)(输入和输出不在同一硬盘上),程序需要24小时以上,怎么优化呢?你知道吗


Tags: 文件csvpandasdiff差异rowpddf1
1条回答
网友
1楼 · 发布于 2024-06-14 20:37:45

老实说,Python内置的读写文本文件的功能是最佳的。一次读入一行到列表中,添加额外的列,然后将其附加到输出文本文件中。你知道吗

一次读入一行,根据需要进行修改,然后将其附加到输出文件中。会比你想象的快。您可以使用tqdm之类的工具来监视进度。你知道吗

比如:

import csv
from tqdm import tqdm
with open('myfile.txt', newline='') as f:
     reader = csv.reader(f)
     for row in tqdm(reader):
          row.append('new_column')
          with open('output.csv', 'a') as outfile:
               outfile.write(row)

相关问题 更多 >