如何在Pandas中按日期分组时间戳并统计每日销售总额?
按日期聚合销售总额的解决方案
核心思路
要合并同一天的记录并求和金额,关键是将datetime64类型的时间戳转换为日期维度,再通过groupby按日期分组聚合。
示例代码与步骤
假设你的DataFrame结构如下(包含时间戳、其他字段和金额列):
import pandas as pd # 模拟你的数据 df = pd.DataFrame({ 'timestamp': pd.to_datetime(['2024-06-01 08:30', '2024-06-01 15:45', '2024-06-02 10:10']), 'category': ['食品', '日用品', '食品'], 'amount': [50, 80, 65] })
1. 提取日期维度并分组求和
直接用日期作为分组键,无需新增列,一步完成聚合:
daily_summary = df.groupby(df['timestamp'].dt.date)['amount'].sum().reset_index(name='daily_total')
2. 查看结果
运行后得到每日销售总额:
date daily_total 0 2024-06-01 130 1 2024-06-02 65
常见问题排查
如果之前groupby失败,大概率是这两个原因:
- 未提取日期,直接用完整时间戳分组:每个时间戳都唯一,无法合并同一天记录
- 未指定聚合列:直接
df.groupby(...)会尝试对所有列聚合,可能因非数值列报错
扩展:保留其他字段的处理
如果需要保留日期外的其他字段(比如取当日第一条记录的分类),可以用agg指定不同列的聚合规则:
daily_summary = df.groupby(df['timestamp'].dt.date).agg( daily_total=('amount', 'sum'), first_category=('category', 'first') ).reset_index()
内容的提问来源于stack exchange,提问作者Cracktheleg
相关产品推荐
相关产品推荐

