我想向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小时的时间,如何对其进行优化?
答案 0 :(得分:1)
老实说,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)