Python 将列表视为fwf并导入数据帧

Python 将列表视为fwf并导入数据帧,python,pandas,Python,Pandas,我在文件中有一个数据集,如下所示: headerfilewithlotsofinformationthatcanbediscarted@!123456789LASTNAME FIRSTNAME987654321123456789@!7418529630LASTNAME FIRSTNAME7895456423156498456@!... 使用Python的.split()方法,我可以以更有用的格式分隔文件,该格式返回一个列表,如下所示: headerfilewithlotsofinformati

我在文件中有一个数据集,如下所示:

headerfilewithlotsofinformationthatcanbediscarted@!123456789LASTNAME FIRSTNAME987654321123456789@!7418529630LASTNAME FIRSTNAME7895456423156498456@!...
使用Python的.split()方法,我可以以更有用的格式分隔文件,该格式返回一个列表,如下所示:

headerfilewithlotsofinformationthatcanbediscarted
123456789LASTNAME FIRSTNAME9876543211234567895
741852963LASTNAME FIRSTNAME7895456423156498456
...
如您所见,结果列表中的每个元素都是一个固定宽度的类似文件的结构。从这里开始,我需要进一步将每一行分隔成相应的值(我将在列表中手动设置advanced中需要的列的名称和宽度),并创建一个DataFrame:

         ID               Name    COL1   COL2   COL3
0 123456789 LASTNAME FIRSTNAME 9876543 211234 567895
1 741852963 LASTNAME FIRSTNAME 7895456 423156 498456
...
问题是,如何将列表中的每一行(或整个列表)视为pandas中的固定宽度值,以将其转换为数据帧?

如果我直接从固定宽度文件读取数据,实现这一点的等效方法如下:

pd.read_fwf(file, colspecs = [(0,11),(11,50)...], header = None, names = ("ID", "Name"...)
我试图将文件直接加载到pandas数据帧上,并使用pandas将其分隔(拆分)成行,但速度似乎相当慢(pandas大约需要30秒,Python不到0.2秒,大约需要100000行)。尽管这样,我还是可以使用前面的代码获取所需的列。

在拆分()后尝试此操作:


你是如何把这些数字分成col1,col2和col3的?
colspecs = 0, 9, 18, 26, 33, 40, 47
df = pd.DataFrame([[row[i:k] for i, k in zip(colspecs[:-1], colspecs[1:])] for row in split_list[1:]])