You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中实现未来6个月数据行转列及Units求和

按月份聚合Units并转置为列的实现方案

需求说明

  • 针对包含Part no.、Date、Units字段的数据集
  • 以当前月份起的未来6个月作为列,统计每个部件对应月份的Units总和
  • 示例数据与期望输出如下:

示例输入数据

Part no.DateUnits
121321/9/231
121321/9/231
121321/10/231
121321/10/231
121321/11/231
121321/11/231
121321/12/231
121321/12/231
121321/12/231
121321/12/231

期望输出

Part no.当前月份当前月份+1当前月份+2当前月份+3
12132224

实现方案(Python Pandas)

以下是基于Pandas的代码实现,可直接适配你的数据集:

import pandas as pd
from datetime import datetime

# 1. 加载数据集(替换为你的数据源,比如pd.read_csv())
data = {
    'Part no.': ['1213']*10,
    'Date': ['21/9/23','21/9/23','21/10/23','21/10/23','21/11/23','21/11/23','21/12/23','21/12/23','21/12/23','21/12/23'],
    'Units': [1]*10
}
df = pd.DataFrame(data)

# 2. 解析日期字段(注意格式为日/月/年,根据实际格式调整format参数)
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y')

# 3. 提取年月周期,避免跨年月份混淆
df['Year-Month'] = df['Date'].dt.to_period('M')

# 4. 定义当前月份(实际场景可替换为datetime.now().to_period('M')获取系统当前月)
current_month = df['Year-Month'].min()  # 示例中取数据最早月份作为当前月

# 5. 生成当前月起未来6个月的周期范围
target_months = pd.period_range(start=current_month, periods=6, freq='M')

# 6. 筛选目标月份的数据
filtered_df = df[df['Year-Month'].isin(target_months)]

# 7. 按部件和年月分组求和,转置为宽表
grouped_sum = filtered_df.groupby(['Part no.', 'Year-Month'])['Units'].sum().unstack()

# 8. 重命名列,匹配需求的命名规则
col_names = [f'当前月份+{i}' if i > 0 else '当前月份' for i in range(len(target_months))]
grouped_sum.columns = col_names

# 9. 重置索引,输出最终结果
final_result = grouped_sum.reset_index()
print(final_result)

关键说明

  • 日期解析:需根据实际日期格式调整pd.to_datetime的format参数,确保日期转换正确
  • 当前月份定义:示例中用数据的最早月份代替,实际可改为datetime.now().to_period('M')获取系统当前月
  • 跨年处理:使用to_period('M')生成年月周期,可自动处理跨年度的月份统计

内容的提问来源于stack exchange,提问作者vicky bundele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:11:38