JT *_*ong 5 python group-by dataframe pandas pandas-groupby
我正在试图弄清楚如何计算前一个月单位销售额变化最大的前五大产品.下面是我的一小部分数据,这里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
Run Code Online (Sandbox Code Playgroud)
我想要实现的是计算同一产品的所有差异,找到差异最大的产品.说我期待的结果就像:
Vendor_SKU
DLEBL140 -4.0
DLEBL90 10.0
DLEBR160 1.0
DLEG180 -10.0
DLER150 1.0
DLEW110 -8.0
DLEY130 -12.0
Run Code Online (Sandbox Code Playgroud)
通过这个结果,我可以找出前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
Run Code Online (Sandbox Code Playgroud)
猜猜我需要插入数量为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
Run Code Online (Sandbox Code Playgroud)
从这里开始,如果您想找到前 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |