2017-12-28 1 views
1

나는 Stockcode와 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

: -) 두 솔루션의 혼합이 잘 작동 – Wen

+1

->'df.pivot (열 = 'StockCode', 값 = 'Quantity'). fillna (0)' –

+0

@LaurentR 아하, 알 겠어 :-) 해피 코딩 – Wen

관련 문제