[英]pandas - get_dummies multiplied by quantities
我有一個pandas.DataFrame
與Stockcode及數量:
>>>df
StockCode Quantity
0 85123A 6
1 71053 6
2 84406B 8
3 84029G 6
4 84029E 6
我正在尋找一種解決方案來讓pandas.get_dummies()
乘以數量。
我期待的輸出應該是這樣的:
>>>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 循環來將所有的假人乘以數量,但我希望有一個更“pythonic”的解決方案。
有誰知道是否有更好的方法來獲得那些更正的假人?
謝謝
拉里
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]
這也有效
df.StockCode.str.get_dummies().mul(df.Quantity, axis=0)
參考
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.get_dummies.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.