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

如何实现交替日期列与中间值列的数据向量化堆叠?

电表消耗数据格式化与向量化堆叠方案

首先,我把你提供的原始记录整理成结构化的Markdown表格,方便清晰查看每个字段的对应关系:

INSTALLMETER_NOField3Field4Field5Field6Field7Field8Field9Field10Field11Field12Field13
80000000191518821-Jan-185.61-Dec-177.91-Nov-175.51-Oct-174.41-Sep-176.11-Aug-17
80000001316920871-Jan-1855.51-Dec-1762.71-Nov-172.21-Oct-1721-Sep-179.31-Aug-17
80000003MISSING1-Jan-1801-Dec-1701-Nov-1701...----

日期与消耗的对应关系(按你的规则)

按照你说明的“消耗值位于两个日期列之间”的规则,每个记录的区间对应关系如下:

  • 对于INSTALL 80000000:
    • 1-Aug-17(Field13)→ 1-Sep-17(Field11),消耗量:6.1(Field12)
    • 1-Sep-17(Field11)→ 1-Oct-17(Field9),消耗量:4.4(Field10)
    • 1-Oct-17(Field9)→ 1-Nov-17(Field7),消耗量:5.5(Field8)
    • 1-Nov-17(Field7)→ 1-Dec-17(Field5),消耗量:7.9(Field6)
    • 1-Dec-17(Field5)→ 1-Jan-18(Field3),消耗量:5.6(Field4)
  • 对于INSTALL 80000001:
    • 1-Aug-17(Field13)→ 1-Sep-17(Field11),消耗量:9.3(Field12)
    • 1-Sep-17(Field11)→ 1-Oct-17(Field9),消耗量:2(Field10)
    • 1-Oct-17(Field9)→ 1-Nov-17(Field7),消耗量:2.2(Field8)
    • 1-Nov-17(Field7)→ 1-Dec-17(Field5),消耗量:62.7(Field6)
    • 1-Dec-17(Field5)→ 1-Jan-18(Field3),消耗量:55.5(Field4)

向量化堆叠处理实现(Python Pandas)

要完成这类结构化数据的向量化堆叠,最便捷的方式是用Pandas的melt思想(或手动分组拼接),将宽格式数据转换为长格式,实现堆叠效果。以下是具体代码:

import pandas as pd

# 构造原始数据
data = {
    'INSTALL': ['80000000', '80000001', '80000003'],
    'METER_NO': ['19151882', '31692087', 'MISSING'],
    'Field3': ['1-Jan-18', '1-Jan-18', '1-Jan-18'],
    'Field4': [5.6, 55.5, 0],
    'Field5': ['1-Dec-17', '1-Dec-17', '1-Dec-17'],
    'Field6': [7.9, 62.7, 0],
    'Field7': ['1-Nov-17', '1-Nov-17', '1-Nov-17'],
    'Field8': [5.5, 2.2, 0],
    'Field9': ['1-Oct-17', '1-Oct-17', '1...'],
    'Field10': [4.4, 2, None],
    'Field11': ['1-Sep-17', '1-Sep-17', None],
    'Field12': [6.1, 9.3, None],
    'Field13': ['1-Aug-17', '1-Aug-17', None]
}

df = pd.DataFrame(data)

# 定义日期-消耗的配对组,对应每个区间的开始/结束日期+消耗字段
date_consumption_pairs = [
    ('Field13', 'Field11', 'Field12'),
    ('Field11', 'Field9', 'Field10'),
    ('Field9', 'Field7', 'Field8'),
    ('Field7', 'Field5', 'Field6'),
    ('Field5', 'Field3', 'Field4')
]

# 初始化空列表存储堆叠后的数据
stacked_data = []

# 遍历每个配对组,生成统一格式的子数据集
for start_col, end_col, consumption_col in date_consumption_pairs:
    temp_df = df[['INSTALL', 'METER_NO', start_col, end_col, consumption_col]].rename(
        columns={
            start_col: 'Start_Date',
            end_col: 'End_Date',
            consumption_col: 'Consumption'
        }
    )
    stacked_data.append(temp_df)

# 合并所有堆叠数据,生成最终长格式数据集
final_stacked_df = pd.concat(stacked_data, ignore_index=True)

# 可选:过滤掉缺失关键数据的行(根据需求调整)
final_stacked_df = final_stacked_df.dropna(subset=['Start_Date', 'End_Date', 'Consumption'])

print(final_stacked_df.head())

代码说明:

  1. 先构造原始DataFrame还原你的记录;
  2. 提前定义好每个日期区间和对应消耗字段的配对关系;
  3. 遍历每个配对组,将每组字段重命名为统一的Start_Date、End_Date、Consumption,保证格式一致;
  4. 合并所有分组数据,得到堆叠后的长格式数据集;
  5. 可选过滤缺失值,保证数据完整性。

运行后会得到类似如下的堆叠结果(示例):

INSTALLMETER_NOStart_DateEnd_DateConsumption
80000000191518821-Aug-171-Sep-176.1
80000001316920871-Aug-171-Sep-179.3
80000000191518821-Sep-171-Oct-174.4
80000001316920871-Sep-171-Oct-172

这种长格式数据更适合后续的数据分析、可视化或建模操作,完全实现了向量化堆叠的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:42:42