2012-03-07 9 views
3

私はすべてのセルにいくつかの値を保持するcsvファイルを読み込もうとしていますが、私はそれらを1つのint形式のバイトにエンコードしてパンダのセルに格納します) - > 771)。そのためには、read_csv関数のコンバーターパラメーターを使用したいと思います。問題は、私が手元にある列の名前を知りませんし、変換器に渡す値は、列名をキーとして持つべきであるということです。実際、私はすべての列を同じ変換関数で変換したいと思っています。そのために、書く方が良いでしょう:read_csvコンバータの不明な列

read_csv(fhand, converter=my_endocing_function) 

より:

read_csv(fhand, converters={'col1':my_endocing_function, 
          'col2':my_endocing_function, 
          'col3':my_endocing_function,}) 

その可能性のようなものですか?

dataframe = read_csv(fhand) 
enc_func = numpy.vectorize(encoder.encode_genotype) 
dataframe = dataframe.apply(enc_func, axis=1) 

しかし、私はこのアプローチがあまり効率的でないかもしれないと思います。 ところで、私はto_stringメソッドで使用されているフォーマッタと同様の疑問を持っています。

答えて

2

名前の代わりに整数(0,1,2)を渡すことができます。 docstringから:

converters : dict. optional 
    Dict of functions for converting values in certain columns. Keys can either 
    be integers or column labels 
+0

私は事前に列の数を知らなくても問題はありませんが、それは問題ありません。私は、applyメソッドを使ってロードした後、データフレームの変換を続けると思います。 –

+0

@JoseBlanca:最初にテキストバッファに読み込み、ヘッダー行を解析してcolsの数を判断します。これで、テキストバッファから変換元とread_csvを作成できます。 – smci