技术问询:如何按EAN_code获取对应的Transaction_Date最大值
嘿,你这需求就是要给每个EAN码找出对应的最新销售日期对吧?我给你准备了两种最常用的实现方案,不管你用SQL还是Python Pandas都能搞定:
方法1:SQL实现
核心逻辑是按EAN_Code分组,然后对Transaction_Date列取最大值。需要注意的是,你的日期是dd/mm/yyyy的字符串格式,直接对字符串取最大值可能会出现逻辑错误(比如字符串排序会把09/04/2018排在14/04/2018前面),所以建议先把字符串转成日期类型再计算。
基础版(假设日期已存为日期类型)
SELECT EAN_Code, MAX(Transaction_Date) AS Latest_Transaction_Date FROM your_table_name -- 替换成你的表名 GROUP BY EAN_Code;
日期格式转换版(针对字符串类型的日期)
如果你的Transaction_Date是字符串,以MySQL为例,用STR_TO_DATE转换格式:
SELECT EAN_Code, MAX(STR_TO_DATE(Transaction_Date, '%d/%m/%Y')) AS Latest_Transaction_Date FROM your_table_name GROUP BY EAN_Code;
其他数据库类似,比如SQL Server用CONVERT(DATE, Transaction_Date, 103)(103对应dd/mm/yyyy格式)。
方法2:Python Pandas实现
用Pandas处理的话,先把日期字符串转成datetime类型,再通过groupby分组取最大值即可:
import pandas as pd # 读取数据(这里假设是CSV文件,你也可以直接用已有的DataFrame) df = pd.read_csv('your_data.csv') # 将Transaction_Date转换为datetime类型,指定格式为dd/mm/yyyy df['Transaction_Date'] = pd.to_datetime(df['Transaction_Date'], format='%d/%m/%Y') # 按EAN_Code分组,取每个组的最大Transaction_Date,最后重置索引得到规整的结果 latest_sales_dates = df.groupby('EAN_Code')['Transaction_Date'].max().reset_index() # 查看结果 print(latest_sales_dates)
执行后会得到每个EAN码对应一行,显示它的最新销售日期,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Sshitanshu
相关产品推荐
相关产品推荐

