我正在尝试
使用 Python 。
问题是执行这些代码花费的时间太长。具有90万行的文件花了大约1个小时才达到2%。
这是我正在阅读的示例文件
将有n个CAJ行和61列
每个标准值保持不变,直到出现新值为止。 (一个文件只有一个标头,多个FIN等等……)
首先我正在使用
with open(filename) as fn:
content = fn.readlines()
从文件中读取每一行。
然后我通过对每条CAJ行进行计数来使用熊猫创建空的(na)数据框。
row_count = 0
for line in content:
if(line[0:3] =='CAJ'):
row_count+=1
print('There is ' + str(row_count) + ' rows.')
df = pd.DataFrame(index=range(row_count), columns=columns)
(列是每个条件的列名称)
接下来,我为每行创建一个临时值列表。
row_list = ['']*len(columns)
row_list[0:2] = hdr[1:3]
最后,我检查每行的每个条件并将其存储为临时内容。如果我以CAJ结尾,则修改数据帧的当前行并继续。
row_counter = 0
for line in content:
if(line[0:3] =='FIN'):
fin_cur = line.split(',')[1:-1]
row_list[2:13] = fin_cur
elif(line[0:3] =='PRV'):
prv_cur = line.split(',')[1:-1]
row_list[13] = prv_cur[0]
elif(line[0:3] == 'PLB'):
plm_cur = line.split(',')[1:-1]
row_list[14:33] = plm_cur
elif(line[0:3] == 'CLM'):
clm_cur = line.split(',')[1:-1]
row_list[33:42] = clm_cur
elif(line[0:3] == 'CAJ'):
caj_cur = line.split(',')[1:-1]
row_list[42:61] = caj_cur
df.loc[row_counter]=row_list
row_counter+=1
我以为会是O(n),但是它花费的时间比我预期的长。
我很确定有更好的方法将这些文件管理为csv文件。
处理这些文件的最佳方法是什么?
编辑
这是示例csv输出。