web-dev-qa-db-ja.com

pandas列の値を他の列で割る方法

私はデータフレームを持っています:

>>> dt
                   COL000   COL001   QT
STK_ID  RPT_Date                       
STK000  20120331   2.6151   2.1467    1
        20120630   4.0589   2.3442    2
        20120930   4.4547   3.9204    3
        20121231   4.1360   3.8559    4
STK001  20120331  -0.2178   0.9184    1
        20120630  -1.9639   0.7900    2
        20120930  -2.9147   1.0189    3
        20121231  -2.5648   2.3743    4
STK002  20120331  -0.6426   0.9543    1
        20120630  -0.3575   1.6085    2
        20120930  -2.3549   0.7174    3
        20121231  -3.4860   1.6324    4

そして、列の値を「QT」列で除算して、次のようにします。

dt =  dt/dt.QT     # pandas does not accept this syntax

望ましい出力は次のとおりです。

STK_ID  RPT_Date        COL000       COL001  QT
STK000  20120331   2.615110188  2.146655745   1
        20120630   2.029447265  1.172093561   1
        20120930   1.484909881  1.306795608   1
        20121231   1.034008443  0.963970609   1
STK001  20120331  -0.217808111  0.918355842   1
        20120630  -0.981974837  0.394977675   1
        20120930  -0.97157148   0.339633733   1
        20121231  -0.641203355  0.593569537   1
STK002  20120331  -0.642567516  0.954323016   1
        20120630  -0.178759288  0.804230898   1
        20120930  -0.784982521  0.239117442   1
        20121231  -0.871501505  0.408094317   1

どうやってするか?

21
bigbug

/演算子のdvは、デフォルトの軸「列」で div と等しいようです。軸を「インデックス」に設定すると、機能します。

df = df.div(df.QT, axis='index')

別のトリッキーな方法は、最初にそれを転置し、それを分割し、そして次に転置することです:

df = (df.T / df.QT).T
50
waitingkuo