2017-09-06 11 views
0

私は量子化学を扱う化学者であり、私のソフトウェアは大きな出力を生成します。この出力の一部は、分子軌道組成である。 (最初の列を見て)テキストファイルからデータテーブルを解析する

------------------ 
MOLECULAR ORBITALS 
------------------ 
         0   1   2   3   4   5 
       -10.15161 -0.69244 -0.39172 -0.39172 -0.39172 0.05029 
        2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 
        -------- -------- -------- -------- -------- -------- 
    0C 1s   0.466772 -0.095648 0.000000 -0.000000 -0.000000 0.051744 
    0C 2s   0.608599 -0.202428 0.000000 -0.000000 -0.000000 0.113737 
    0C 3s   0.034954 0.321132 -0.000000 0.000000 0.000000 -0.300805 
    0C 4s  -0.014530 0.330414 0.000001 0.000002 -0.000001 0.208530 
    0C 5s   0.022640 0.091859 0.000000 -0.000002 0.000000 -4.760727 
    0C 1pz  -0.000000 -0.000001 0.186630 0.202067 0.179965 -0.000001 
    0C 1px  0.000000 0.000001 0.140077 -0.259193 0.145762 -0.000001 
    0C 1py  0.000000 0.000001 -0.231511 0.006068 0.233270 0.000002 
    0C 2pz  -0.000000 -0.000000 0.132092 0.143018 0.127376 0.000000 

(..................................) 

    3H 1px  -0.000743 0.004220 0.008142 -0.000711 0.009734 -0.013234 
    3H 1py  0.000254 -0.001445 -0.009341 -0.002708 0.006778 0.004530 
    4H 1s  -0.000618 0.084595 0.047761 0.003667 -0.177787 0.014571 
    4H 2s  -0.002140 0.091035 0.068203 0.005237 -0.253883 -0.128755 
    4H 3s  -0.004359 0.012693 0.030427 0.002337 -0.113264 1.677382 
    4H 1pz  -0.000823 0.004673 0.009583 0.007438 -0.004446 -0.014654 
    4H 1px  -0.000743 0.004220 0.007638 -0.009051 -0.004613 -0.013233 
    4H 1py  -0.001934 0.010983 -0.001402 0.000744 -0.017221 -0.034441 
         6   7   8   9  10  11 
        0.12537 0.12537 0.12537 0.19934 0.19934 0.19934 
        0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 
        -------- -------- -------- -------- -------- -------- 
    0C 1s   0.000000 0.000001 -0.000000 0.000000 -0.000000 -0.000000 
    0C 2s   0.000000 0.000001 -0.000001 -0.000000 -0.000001 -0.000001 
    0C 3s   0.000001 0.000002 0.000000 0.000001 -0.000003 -0.000004 
    0C 4s  -0.000016 -0.000028 0.000006 -0.000000 0.000022 0.000024 
    0C 5s   0.000073 0.000101 0.000018 0.000027 -0.000091 -0.000092 
    0C 1pz  0.146975 -0.159982 -0.096223 0.083398 -0.072907 0.070651 
    0C 1px  0.064477 0.158428 -0.164919 0.067754 0.108060 0.031535 
(and so on) 

私の意図は、このクールな情報の一部を解析し、それを使用して操作を実行することですが、データは非常に複雑である:ここで はスニップです

  • 0Cは、(炭素)

  • (1、2、3、...)S、(1、2、3、...)pは、等原子軌道である第一原子

    0(分子軌道#)

-10.15161(軌道のエネルギー)

2.00000軌道の(職業)

だから、私の質問は以下のとおりですから、これをつかむための最良の、より効率的な方法は何ですか私の出力?タスクに最適なPythonモジュールがありますか?パンダデータフレームにあなたのきれいにフォーマットされたデータを読み出すことにより、

答えて

0

スタート:

data = pd.read_fwf('data.txt', skiprows=3, widths=[7,10,10,10,10,10,10,10]) 

破線削除:番号に文字列を変換

data = data[data['0']!='--------'] 

を:

data.iloc[:,2:] = data.iloc[:,2:].astype(float) 

は白を削除最初の2つの列のスペース:

data.iloc[:,:2] = data.iloc[:,:2].replace(' ', '') 

これでテーブルを使用できます。スタックされていないと並べて配置する必要があるいくつかの積み重ねられたブロック(最初の列のNaNによってそれらを認識することができます)から構成されていることを覚えておいてください。

+0

本当にありがとう、@DYZ、その場にいた! –

関連する問題