使用python

时间:2019-02-18 14:18:42

标签: python python-3.x pandas csv optimization

我想向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小时的时间,如何对其进行优化?

1 个答案:

答案 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)