1
私は、大きなデータセットに対してより効率的なグループ化を行うために、Python 3でパンダのデータフレームをビンしようとしています。現在、パフォーマンスのボトルネックは、.apply()メソッドを使用してデータフレームを反復処理しています。反復せずにパンダの16進カラムを変換する
カラム内のすべてのエントリは16進数であるため、pd.to_numeric関数は必要なものを正確に実行する必要があります。
私はさまざまなオプションを試しましたが、これまでのところ何も機能していません。
# This sets all values to np.nan with coerced errors, 'Unable to parse string' with raise errors.
dataframe[bin] = pd.to_numeric(dataframe[to_bin], errors='coerce') % __NUM_BINS__
# Gives me "int() Cannot convert non-string with explicit base"
dataframe[bin] = int(dataframe[to_bin].astype(str), 16) % __NUM_BINS__
# Value Error: Invalid literal for int with base 10 'ffffffffff'
dataframe[bin] = dataframe.astype(np.int64) % __NUM_BINS__
お勧めはありますか?これは、人々が過去に取り組まなければならなかったようなものです。
このソリューションを使用して列エンティティを文字列に変換しようとしましたか:http://stackoverflow.com/a/22231860/1607105? 'int(x、16)'にHEX値があることがわかるように、文字列変換の後に '0x'接頭語を追加する必要があるかもしれません。 – dblclik
私はちょうど文字列に変換し、値に0xを付加してみましたが、 "int()明示的なベースで非文字列を変換できません"。私は自分のデータフレームをチェックし、実際の値は間違いなく文字列(例として0xfffff)です。 – ZSmyth
'list-comprehension'を使ってパフォーマンスを改善し、そこからシリーズを作成することができます。次のようになります: '[int(x、16)for ser.tolist()]' –