0

特定のパラメーターを説明する列のリストを含むファイルがあります。

サイズ マグニチュード 光度

このファイルから特定のデータ (特定の行と列) のみが必要です。これまでのところ、必要な行番号を追加したPythonのコードがあります。列(大きさ)と(光度)の変数だけでテキストファイルに正しい文字列を取得するためにそれを一致させる方法を知る必要があります。これにどのようにアプローチできるかについての提案はありますか?

これが私のコードのサンプルです (#comments は、私が行ったこととやりたいことを説明しています):

temp_ListMatch = (point[5]).strip() 
if temp_ListMatch:
    ListMatchaddress = (point[5]).strip()
    ListMatchaddress = re.sub(r'\s', '_', ListMatchaddress) 
    ListMatch_dirname = '/projects/XRB_Web/apmanuel/499/Lists/' + ListMatchaddress
    #print ListMatch_dirname+"\n" 

    try:
        file5 = open(ListMatch_dirname, 'r')
    except IOError:
        print 'Cannot open: '+ListMatch_dirname

    Optparline = []
    for line in file5:
        point5 = line.split()
        j = int(point5[1])
        Optparline.append(j)
        #Basically file5 contains the line numbers I need, 
        #and I have appended these numbers to the variable j. 
        temp_others = (point[4]).strip()
        if temp_others: 
            othersaddress = (point[4]).strip()
            othersaddress =re.sub(r'\s', '_', othersaddress) 
            othersbase_dirname = '/projects/XRB_Web/apmanuel/499/Lists/' + othersaddress
            try:
                file6 = open(othersbase_dirname, 'r')
            except IOError:
                print 'Cannot open: '+othersbase_dirname

            gmag = []
            z = []
            rh = []
            gz = []

            for line in file6:
                point6 = line.split()
                f = float(point6[2])
                g = float(point6[4])
                h = float(point6[6])
                i = float(point6[9])
         # So now I have opened file 6 where this list of data is, and have
        # identified the columns of elements that I need. 
        # I only need the particular rows (provided by line number) 
        # with these elements chosen. That is where I'm stuck!
4

1 に答える 1

0

データ ファイル全体を pandas DataFrame にロードします (データ ファイルに列名を取得できるヘッダーがあると仮定します)。

import pandas as pd
df = pd.read_csv('/path/to/file') 

行番号のファイルを pandas シリーズにロードします (1 行に 1 つあると仮定します)。

#  squeeze = True makes the function return a series
row_numbers = pd.read_csv('/path/to/rows_file', squeeze = True)

行番号ファイルにある行と、列の大きさと明度のみを返します (これは、最初の行の番号が 0 であることを前提としています)。

relevant_rows = df.ix[row_numbers][['magnitude', 'luminosity']
于 2013-03-20T00:40:32.363 に答える