[Pandas技巧] Pandas实现SQL中的ROW_NUMBER()功能

521bd35642754a11b11586854ae78be2.png
 美图欣赏2022/07/14

在最近的需求开发中,涉及到利用Pandas对某列数值进行分组排序,并新增字段用于记录排名情况(类似于Mysql当中的窗口函数ROW_NUMBER()功能),特此记录该篇文章帮助有需要的人,同时也方便日后的学习复盘

代码如下所示:

import pandas as pd

df = pd.DataFrame({'material':['C622203800-025', 'C622203800-025', 'C622203800-025', 'C622203800-025', 'C622203800-025','A112233','A112233','B456','B456'],
                   'product_number':['84-0086-03','85-0018-00','84-0089-05','83-0402-05','83-0433-05','AB','BC','CD','EF'],
                   'Q2_Demand':[912,1200,14226,48,0,123,456,250,15],
                   'Q2 Total Supply':[50020, 50020, 50020, 50020, 50020,1000,1000,200,200]})

df

736c2ab53f1a449a8dd3a92651f81f6e.png

问题: 新增'Q2_Priority'字段,针对'Q2_Demand'的数量多少,按material分组进行排名

# 新增Q2_Priority字段
df['Q2_Priority'] = df.groupby('material')['Q2_Demand'].rank(ascending=1,method='first').astype(int)

新增字段'Q2_Priority'后的df 

b5c55c5558874765936ed50e4db3cfd9.png

从上图可看出按material分组进行排名,字段'Q2_Priority'的值毫无顺序规律,为此进行如下操作:

# 按字段'material','Q2_Priority'排序
df = df.sort_values(by = ['material','Q2_Priority'])

处理过后的df 

c737ace2c70948959dbf4c759d554436.png

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值