我正在试图弄清楚如何计算前一个月单位销售额变化最大的前五大产品.下面是我的一小部分数据,这里Vendor_SKU和Order_Month都是由pd.groupby创建的索引.
amz = amz.groupby(['Vendor_SKU', 'Order_Month'])['Quantity'].sum()
Vendor_SKU Order_Month
DLEBL140 2018-11-01 17.0
2018-12-01 13.0
DLEBL90 2018-11-01 29.0
2018-12-01 39.0
DLEBR160 2018-11-01 16.0
2018-12-01 17.0
DLEG180 2018-11-01 30.0
2018-12-01 20.0
DLER150 2018-11-01 22.0
2018-12-01 23.0
DLEW110 2018-11-01 49.0
2018-12-01 41.0
DLEY130 2018-11-01 32.0
2018-12-01 20.0
我想要实现的是计算同一产品的所有差异,找到差异最大的产品.说我期待的结果就像:
Vendor_SKU
DLEBL140 -4.0
DLEBL90 10.0
DLEBR160 1.0
DLEG180 -10.0
DLER150 1.0
DLEW110 -8.0
DLEY130 -12.0
通过这个结果,我可以找出前5个变化.有任何想法吗?谢谢!
感谢你们的快速反应,我在发布这个问题之前尝试了groupby.diff,但得到了一批没有任何索引的NaN,只是一列NaN,随机数很少.后来我意识到可能有产品只在11月或12月购买,就像下面的前两行一样,然后不是两个月之间的差异,我只得到了带有diff()的NaN.
Vendor_SKU Order_Month Quantity
0 C142 2018-12-01 2.0
1 CC-18P 2018-11-01 5.0
2 DLEBL140 2018-11-01 17.0
3 DLEBL140 2018-12-01 13.0
4 DLEBL90 2018-11-01 29.0
5 DLEBL90 2018-12-01 39.0
猜猜我需要插入数量为0的行,然后尝试diff().
解决方法:
从groupby和diff开始,因为你想要每个供应商的最大差异:
amz.groupby(level=0).diff(1).max(level=0)
Vendor_SKU
DLEBL140 -4.0
DLEBL90 10.0
DLEBR160 1.0
DLEG180 -10.0
DLER150 1.0
DLEW110 -8.0
DLEY130 -12.0
Name: Quantity, dtype: float64
从这里,如果你想找到前5个差异,你可以使用nlargest:
amz.groupby(level=0).diff(1).max(level=0).nlargest(5)
Vendor_SKU
DLEBL90 10.0
DLEBR160 1.0
DLER150 1.0
DLEBL140 -4.0
DLEW110 -8.0
Name: Quantity, dtype: float64
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。