簡體   English   中英

如何從 .t​​xt 文件的特定列創建熊貓數據框?

[英]How can I create a pandas dataframe from specific columns of a .txt file?

我有許多具有特定格式的文本文件。 文本文件的每一列都分配給特定的信息。 沒有任何真正的分隔符,有時整個列集都被填滿了,因此並不總是有空格。 例如

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 數據框中。 必須添加我自己的分隔符似乎令人討厭。 有沒有辦法告訴熊貓使用這些文本文件列中的一些創建數據框列?

我在 Linux 上使用 Python 3.6,pandas v0.23.4。

編輯:為了澄清起見,當提到 .txt 文件的列時,我的意思是指水平移動時光標的位置。 所以任何行的第一個字符在第 1 列,任何行的第二個字符是第 2 列,任何行的第 13 個字符是第 13 列等等。在熊貓數據框中如何使用該詞的上下文。 對於任何可能的混淆,我們深表歉意。

在我看來,您文件中的數據位於固定寬度的列中。 有了這個假設,我已經改變了你的文件,使它可以被熊貓接受,就像這樣。

 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])]) 

用一列創建數據框。 我現在只是使用數據框將它們添加在一起,什么不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM