Python 如何从.txt文件的特定列创建数据帧?
我有一些特定格式的文本文件。文本文件的每一列都分配给特定的信息。没有任何真正的分隔符,有时整个列集都被填满了,因此并不总是有空白。比如说Python 如何从.txt文件的特定列创建数据帧?,python,linux,pandas,dataframe,text,Python,Linux,Pandas,Dataframe,Text,我有一些特定格式的文本文件。文本文件的每一列都分配给特定的信息。没有任何真正的分隔符,有时整个列集都被填满了,因此并不总是有空白。比如说 1 ALA X 4 80.8 40.6 2 VAL X 234 90.1 42.7 3 VAL X1143 95.2 47.8 ... 34ALANX3324100.2345.8 列1-2专用于从1-99开始的直接计数。第3-6列专用于识别标签。第7列是一个修改器标记。第8-11列是表示另一序列中的值的数字。实际含义并不重要,我只是解释一下,以帮助弄清楚
1 ALA X 4 80.8 40.6
2 VAL X 234 90.1 42.7
3 VAL X1143 95.2 47.8
...
34ALANX3324100.2345.8
列1-2专用于从1-99开始的直接计数。第3-6列专用于识别标签。第7列是一个修改器标记。第8-11列是表示另一序列中的值的数字。实际含义并不重要,我只是解释一下,以帮助弄清楚这个.txt文件到底是怎么回事
在本例中,我对第1-2列(值为0-99)和第8-11列(值为0-9999)感兴趣。这些值有时可能返回NaN或字母。我需要从.txt文件中获取这些列,并将它们放入一个有两列的数据框架中。必须添加自己的分隔符似乎令人讨厌。有没有办法告诉pandas使用这些文本文件列中的一些创建dataframe列
我正在Linux上使用Python3.6,v0.23.4
编辑:为了澄清,当提到.txt文件的列时,我的意思是指水平移动时光标的位置。因此,任何一行的第一个字符在第1列,任何一行的第二个字符在第2列,任何一行的第十三个字符在第13列,等等。当我提到pandas时,我说的是column,我指的是在pandas数据帧中如何使用该词的上下文中的实际列。很抱歉,可能会造成混淆 在我看来,文件中的数据位于固定宽度的列中。基于这个假设,我修改了你的文件,使它能被熊猫接受,就像这样
1 ALA X 4 80.8 40.6
2 VAL X 234 90.1 42.7
3 VAL X1143 95.2 47.8
34ALAN X3324100.2345.8
然后,您可以用这种方式读取第一列和第四列
>>> import pandas
>>> names = ['first', 'ignore', 'second']
>>> widths = [2, 7, 4]
>>> df = pandas.read_fwf('hilliard.txt', widths=widths, names=names, index_col=False)
>>> df
first ignore second
0 1 ALA X 4
1 2 VAL X 234
2 3 VAL X1 143
3 34 ALAN X3 3241
(这样做之后,您可以删除不需要的列。)我发现这似乎是最容易理解的
for filename in glob.glob('*.pdb'):
newfile = open((filename[:5])+".txt","a+")
newfile.write('Residue_ID')
temporaryfile = open(filename, 'r')
for line in temporaryfile:
if "CA" in line:
newfile.write(line[23:26])
else:
pass
然后使用
filename[:10] = pd.read_csv((filename[:5])+".txt", columns = [(filename[:10])])
创建具有一列的数据帧。我现在正在使用数据帧将它们添加到一起,或者什么都不添加。我不这么认为,但是逐行解析文件似乎一点也不困难,为什么不试试呢?