Python的Group-By技术与SQL-partition-By技术的比较

Python的Group-By技术与SQL-partition-By技术的比较,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,我想问一个概念性的问题 我有一张看起来像的桌子 UPC_CODE A_PRICE A_QTY DATE COMPANY_CODE A_CAT 1001 100.25 2 2021-05-06 1 PB 1001 2122.75 10 2021-05-01 1 PB 1002 212.75 5

我想问一个概念性的问题

我有一张看起来像的桌子

UPC_CODE    A_PRICE     A_QTY    DATE       COMPANY_CODE    A_CAT
 1001        100.25       2     2021-05-06      1             PB
 1001        2122.75      10    2021-05-01      1             PB
 1002        212.75       5     2021-05-07      2             PT
 1002        3100.75      10    2021-05-01      2             PB
我希望对于每个UPC_代码和公司代码,都应该获取最新的数据

为了实现这一点,我使用了SQL和Python

使用SQL:

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY UPC_CODE, COMPANY_CODE ORDER BY DATE DESC) rn
FROM yourTable)

SELECT UPC_CODE, A_PRICE, A_QTY, DATE, COMPANY_CODE, A_CAT
FROM cte
WHERE rn = 1;
使用Python:

df = df.groupby(['UPC_CODE','COMPANY_CODE']).\
     agg(Date = ('DATE','max'),A_PRICE = ('A_PRICE','first'),\
     A_QTY = ('A_QTY','first'),A_CAT = ('A_CAT','first').reset_index()
理想情况下,我应该得到以下结果表:

UPC_CODE    A_PRICE     A_QTY    DATE       COMPANY_CODE    A_CAT
 1001        100.25       2     2021-05-06      1             PB
 1002        212.75       5     2021-05-07      2             PT
然而,使用SQL我得到了上述信息,但Python不是这样


我在这里遗漏了什么?

upc\u code
date
列可能与
rank(method='first',升序=False)
一起使用,例如,在确定第一行时按降序应用
dataframe.groupby()
函数在将
date
列转换为datetime后,在Python中键入,以便筛选出
df['rn']
1对应的行

df['date']=pd.to_datetime(df['date'])
df['rn']=df.groupby('upc_code')['date'].rank(method='first',升序=False)
打印(df[df['rn']==1])

@Vahram Daniyen:请详细说明。