巨大文本文件中的Python列表



我需要将一个超过1M行的文本文件导入Pandas Datafreame,然后按位置拆分。以下是数据的示例:

Corno        616600000071835014010820220108202201201082022100000054700000020000000000            0000000000192           010 150   0100090076002000220000004038+00000000000000002934+EUR00000000000293+EUR00000000003227+EUR000000000000            KG     

我现在正在做的是解码线路,然后使用蟒蛇列表进行拆分:

with open('temp.txt', 'r') as f:
for line in f:    
dec = line.decode("cp1252")
temp = [dec[0:6], dec[6:12], dec[12:14], dec[14:22], dec[22:30], dec[30:38], dec[38:39],
dec[39:41], dec[41:49], dec[49:52], dec[52:60], dec[60:62], dec[62:70], dec[70:82],
dec[82:84], dec[84:92], dec[92:104], dec[104:108], dec[108:126], dec[126:144],
dec[144:152], dec[152:153], dec[153:213], negozio]
data_t.append(temp)

然后创建一个具有以下列表的数据帧:

df_total_testate = pd.DataFrame(data_t,
columns=['Column1', 'Column2', 'Column3', 'Column4',
'Column5', 'Column6', 'Column7',
'Column8', 'Column9', 'Column10',
'Column11', 'Column12', 'Column13',
'Column14', 'Column15',
'Column16', 'Column17',
'Column18', 'Column19',
'Column20', 'Column21',
'Column22', 'Column23', 'Column24'])

但这样需要20多分钟。

有什么办法让它更快吗?

编辑:我更新了代码以了解更多详细信息

您应该使用panda内置函数,因为它们经过了高度优化。此外,您应该避免pd.DataFrame.append。如文件所述:

迭代地将行附加到DataFrame可能比单个连接更耗费计算量。更好的解决方案是将这些行附加到列表中,然后将列表与原始DataFrame同时连接。

我的建议是:要么用pd.read_csv(filename, sep="s+", names=[f"Column{i}" for i in range(1, 25)])加载数据。您也可以尝试其他分隔符,而不是АлексейР在评论中提到的s+pd.read_fwf

最新更新