【发布时间】:2021-05-14 09:15:49
【问题描述】:
我想问一个概念性问题。
我有一张看起来像的桌子
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_CODE 和 COMPANY_CODE 获取最新数据。
为了实现这一点,我有 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 并非如此。
我在这里错过了什么?
【问题讨论】:
-
@Vahram Daniyen:请详细说明。
标签: python sql pandas dataframe