5

すべてのセルにいくつかの値を保持するcsvファイルを読み取ろうとしていますが、それらを単一のint形式のバイトにエンコードしてパンダセルに格納します(例:(1、1)-> 771)。そのために、関数のコンバーターパラメーターを使用したいと思いread_csvます。問題は、事前に列の名前がわからないことです。コンバーターに渡される値は、列名をキーとして持つdictである必要があります。実際、同じコンバーター機能ですべての列を変換したいと思います。そのためには、次のように書く方がよいでしょう。

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メソッドで使用されるフォーマッターについても同様の疑問があります。

4

1 に答える 1

3

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

converters : dict. optional
    Dict of functions for converting values in certain columns. Keys can either
    be integers or column labels
于 2012-03-07T20:04:31.107 に答える