2017-12-28 13 views
1

私は、自社コードとpandas.DataFrameと量を持っている:私は、数量を乗じたpandas.get_dummies()を取得するための解決策を探していますパンダ - の数量を乗じたget_dummiesは

>>>df 
    StockCode Quantity 
0 85123A  6 
1 71053  6 
2 84406B  8 
3 84029G  6 
4 84029E  6 

私は期待していた出力は、次のようになります。

>>>pd.get_dummies(df['StockCode']) ... --> * df['Quantity'] 
    71053 84029E 84029G 84406B 85123A 
0 0  0  0  0  6 
1 6  0  0  0  0 
2 0  0  0  8  0 
3 0  0  6  0  0 
4 0  6  0  0  0 

私は量によって、すべてのダミーを乗算するforループを行うことができますが、私はより多くの「神託」ソリューションを願っています。

修正されたダミーを取得するには、より良い方法があるかどうかを知っていますか?

おかげ

ラリー

答えて

1
df.reset_index().pivot('index','StockCode','Quantity').fillna(0) 
Out[93]: 
StockCode 71053 84029E 84029G 84406B 85123A 
index           
0   0.0  0.0  0.0  0.0  6.0 
1   6.0  0.0  0.0  0.0  0.0 
2   0.0  0.0  0.0  8.0  0.0 
3   0.0  0.0  6.0  0.0  0.0 
4   0.0  6.0  0.0  0.0  0.0 

あなたのコードを修正する

pd.get_dummies(df['StockCode']).mul(df.Quantity,0) 
Out[97]: 
    71053 84029E 84029G 84406B 85123A 
0  0  0  0  0  6 
1  6  0  0  0  0 
2  0  0  0  8  0 
3  0  0  6  0  0 
4  0  6  0  0  0 

それともpd.get_dummies(df['StockCode']).values*df.Quantity.values[:,None]

+0

@root: - ) – Wen

+1

両方のソリューションのミックスが素晴らしい作品 - > 'df.pivot(列= '自社コード'、値= 'Quantity')。fillna(0) ' –

+0

@LaurentR aha、あなたはそれを得ました:-)ハッピーコーディング – Wen

関連する問題