2016-04-06 20 views
2

私は14行のヘッダーを持つデータファイルを持っています。ヘッダーには、緯度経度の座標と時刻のメタデータがあります。私は現在のファイルを読み込むことPandasを使用してcsvファイルからヘッダー情報を読み取る

pandas.read_csv(filename, delimiter",", header=14) 

を使用していますが、これは単にデータを取得し、私はメタデータを取得するように見えることはできません。誰でもヘッダーの情報を読む方法を知っていますか?ヘッダは次のようになります。

CSD,20160315SSIO 
NUMBER_HEADERS = 11 
EXPOCODE = 33RR20160208 
SECT_ID = I08 
STNBBR = 1 
CASTNO = 1 
DATE = 20160219 
TIME = 0558 
LATITUDE = -66.6027 
LONGITUDE = 78.3815 
DEPTH = 462 
INSTRUMENT_ID = 0401 
CTDPRS,CTDPRS_FLAG,CTDTMP,CTDTMP_FLAG 
DBAR,,ITS-90,,PSS-78 
+0

'read_csvは()' [ 'header'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)オプションがありますヘッダーを列名として、結果のデータフレームを作成します。これはあなたが探しているものですか? –

+0

'header = range(14)'を使うべきでしょうか? 'header = 14'では、ヘッダーに14行しか使用せず、1-13行をスキップするためです。 –

+1

ヘッダはどの形式ですか?見た目の例を投稿してください。 csvの標準メタデータフォーマットがないので、おそらく 'pandas.read_csv'でそれを読むことができません。カスタムコードを書く必要があるかもしれません。 – Marius

答えて

0

以下の方法ではPandasは使用しませんが、ヘッダー情報を抽出できました。あなたが取り込むことができるように

with open(fname) as csvfile: 
    forheader_IO2016 = csv.reader(csvfile, delimiter=',') 
    header_IO2016 = [] 
    for row in forheader_IO2016: 
     header_IO2016.append(row[0]) 

date = header_IO2016[7].split(" ")[2] 
time = header_IO2016[8].split(" ")[2] 
lat = float(header_IO2016[9].split(" ")[2]) 
lon = float(header_IO2016[10].split(" ")[4]) 
1

あなたは自分でメタデータのヘッダを解析する必要があり、まだあなたはそれからデータを抽出できるように、1回のパスであってもその場でそれを使用することにより、エレガントな方法でそれを行うことができます/

まずなどのファイルの正しさを制御し、自分でファイルを開きます。

f = open(filename) 

すると、それからデータを抽出するために、各メタデータ・ラインを解析する作業を行います。説明のため、私はこれらの行をスキップしています:

for i in range(13): # skip the first 13 lines that are useless for the columns definition 
    f.readline() # use the resulting string for metadata extraction 

は、今あなたがデータフレームをロードするために使用する独自のヘッダ行の準備ができてファイルポインタを持っています。クールなのは、 read_csvがファイルオブジェクトを受け入れることです!私はあなたがあなたのデータフレームのために有用であるヘッダーの唯一の1つの最後の行を持っているあなたの説明で考えると、私は、ヘッダー引数を使用していない

pandas.read_csv(f, sep=",") 

注:このように、あなたは今すぐにデータフレームのロードを開始します。この例からスキップするために、聴取者の解析値/行を構築して調整することができます。