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

olqngx59  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(107)

我想添加一列到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的RAM,和2TB(5200RPM)的外部硬盘(输入和输出不在同一个硬盘上),程序需要超过24小时,我如何优化它?

f4t66c6m

f4t66c6m1#

老实说,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)

相关问题