0

特定の列と条件に基づいて、新しいダミー変数を作成しています。以下は私が取り組んでいるコードです。それは機能しますが、私がやりたいことには遅すぎます。パンダでダミーを作成するより高速でベクトル化された方法はありますか? 具体的には、私の例によると?

パンダで get_dummies 関数を調べましたが、ここで行っていることとは少し異なるようです。私は間違っているかもしれませんが、誰かが get_dummies をこの例で動作させる方法を持っているなら、それも受け入れられる答えです.

def flagger(row, criteria, col):
    if row[col] <= criteria:
        return 1
    if row[col] > criteria:
        return 0

dstk['dropflag'] = dstk.apply(lambda row: flagger(row, criteria, col), axis=1)

編集:ここには2つの良い答えがあります。一見すると、どちらも同じように高速に見えるので (少なくとも同程度)、1 つだけ受け入れました。誰かがより深刻なプロファイリングを行いたい場合は、喜んで回答の選択を修正します。

4

2 に答える 2

2

試してみませんかnp.where。これは列方向のベクトル化操作であり、行方向の適用よりもはるかに高速です。

dstk['dropflag'] = np.where(dstk.col <= criteria, 1, 0)
于 2015-07-01T21:07:34.387 に答える
2

別のオプションは次のとおりです。

dstk['dropflag'] = (dstk[col] <= criteria).astype(int)
于 2015-07-01T21:15:50.943 に答える