Pandas处理CSV时按相同日期聚合Quantity列求和
报错原因
代码运行报错的核心是pandas.to_datetime()传入的format参数和实际日期格式不匹配:
- 你写的
%d-%m-%Y仅适配17-05-2022这类横杠分隔的日-月-年格式 - 实际
Date of purchase列的值是17 May 2022 at 5:40:20PM BST结构,包含月份缩写、12小时制时间、时区标识,和指定格式完全不符,自然解析失败。
完整实现方案
不需要处理冗余的时间、时区字段,直接按下面的代码即可完成日期提取、同日期销量聚合:
import pandas # 读取CSV数据 data = pandas.read_csv("products_sold_history_data.csv") # 提取纯日期部分:优先选容错率更高的截断方案,避免时区解析问题 # 先按" at "分割字符串取前半段,就是纯年月日文本,再转日期类型 data['purchase_date'] = pandas.to_datetime( data['Date of purchase'].str.split(" at ").str[0] ).dt.date # 按日期分组,对Quantity列求和 date_quantity_sum = data.groupby('purchase_date', as_index=False)['Quantity'].sum() # 输出验证结果 print(date_quantity_sum)
样例运行结果
基于你提供的测试数据,最终输出的聚合结果如下:
purchase_date Quantity 0 2022-03-27 2 1 2022-03-28 2 2 2022-03-29 3 3 2022-04-02 2 4 2022-05-17 1
如果你的运行环境pandas版本较低,无法直接识别
17 May 2022这类月份缩写的日期,给to_datetime加个dayfirst=True参数即可。
内容的提问来源于stack exchange,提问作者M Husnain Ali Nasir
相关产品推荐
相关产品推荐

