如何用数据透视表按15点-次日15点时段汇总交易金额?
按15:00至次日15:00跨天时段汇总交易总额的最简实现
不管用Excel数据透视表还是Python,核心逻辑都是通过调整交易时间生成统一的分组标识,把属于同一跨天时段的交易归到同一组,再汇总总额。以下是两种场景的最简方法:
一、Excel(用数据透视表实现)
步骤1:新增辅助列生成分组日期
在表格新增一列(比如列C,命名为「分组日期」),在C2单元格输入公式:
=INT(A2 - TIME(15,0,0))
按回车后下拉填充整列。这个公式的作用是:
- 把交易时间减去15小时,再取日期整数部分
- 对应关系示例:
- 2023-11-27 17:25 → 减15小时后为2023-11-27 02:25 → 分组日期为2023-11-27(对应时段:2023-11-27 15:00 ~ 2023-11-28 15:00)
- 2023-11-27 09:29 → 减15小时后为2023-11-26 18:29 → 分组日期为2023-11-26(对应时段:2023-11-26 15:00 ~ 2023-11-27 15:00)
步骤2:用数据透视表汇总
- 选中整个数据区域(包括辅助列),点击「插入」→「数据透视表」
- 在数据透视表字段面板:
- 将「分组日期」拖到「行」区域
- 将「Transaction total」拖到「值」区域,确保汇总方式为「求和」
- 最终结果与你的示例完全匹配:
- 2023-11-25 → $10.00(组1)
- 2023-11-26 → $17.00(组2)
- 2023-11-27 → $8.00(组3)
二、Python(适合大数据量批量处理)
用Pandas库快速实现,逻辑和Excel一致:
步骤1:读取并预处理数据
import pandas as pd # 读取数据(支持Excel/CSV等格式) df = pd.read_excel("交易记录表.xlsx") # 转换日期时间格式,清理交易金额(去掉$符号转数值) df["Date & Time"] = pd.to_datetime(df["Date & Time"]) df["Transaction total"] = df["Transaction total"].str.replace("$", "").astype(float)
步骤2:生成分组日期并汇总
# 生成分组日期:交易时间减15小时后提取日期部分 df["分组日期"] = (df["Date & Time"] - pd.Timedelta(hours=15)).dt.date # 分组求和,格式化结果为带$的字符串 summary = df.groupby("分组日期")["Transaction total"].sum().reset_index() summary["Transaction total"] = summary["Transaction total"].apply(lambda x: f"${x:.2f}") # 输出结果 print(summary)
运行后输出:
| 分组日期 | Transaction total |
|---|---|
| 2023-11-25 | $10.00 |
| 2023-11-26 | $17.00 |
| 2023-11-27 | $8.00 |
内容的提问来源于stack exchange,提问作者Oliveleek
相关产品推荐
相关产品推荐

