pandas - get_dummies乘以数量

时间:2017-12-28 22:58:29

标签: python pandas

我有一个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”的解决方案。

有没有人知道是否有更好的方法来获得那些纠正过的假人?

由于

拉​​里

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)