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

补全数据集缺失Hora时段数据(排除2-7点)技术咨询

解决方案:用Pandas补全消费时段数据并排除指定时段

核心思路

先生成所有符合要求的日期-有效时段组合,再和原数据集做左连接,自动补全无消费记录的时段行,同时过滤掉2点至7点的时段。

具体步骤(基于Python Pandas)

假设你的数据集已读取为df,包含列:日期(日期类型)、Hora(时段,此处以整数小时为例,如8代表8点)、以及4列消费相关字段。

  1. 数据预处理

    import pandas as pd
    
    # 读取原数据(替换为你的实际读取方式)
    df = pd.read_csv("your_data.csv")
    # 确保日期列是datetime格式
    df["日期"] = pd.to_datetime(df["日期"])
    # 确保Hora为整数(如果原数据是字符串格式,比如"08",执行:df["Hora"] = df["Hora"].astype(int))
    
  2. 定义有效时段
    排除2-7点,保留0、1、8-23点:

    valid_hours = list(range(0, 2)) + list(range(8, 24))
    
  3. 生成完整时间框架
    生成原数据中所有唯一日期和有效时段的笛卡尔积:

    # 获取所有唯一日期
    unique_dates = df["日期"].unique()
    # 构建完整的日期-时段组合
    full_timeframe = pd.MultiIndex.from_product(
        [unique_dates, valid_hours],
        names=["日期", "Hora"]
    ).to_frame(index=False)
    
  4. 左连接补全数据
    将原数据与完整时间框架合并,补全缺失的消费记录(填充为0或NaN,按需选择):

    # 左连接,保留所有完整时段组合
    result_df = pd.merge(full_timeframe, df, on=["日期", "Hora"], how="left")
    # 将消费字段的缺失值填充为0(替换为你的实际消费列名)
    result_df[["消费金额1", "消费金额2", "消费金额3", "消费金额4"]] = result_df[["消费金额1", "消费金额2", "消费金额3", "消费金额4"]].fillna(0)
    

特殊情况处理

  • 如果Hora是时段字符串(如"08:00-09:00"):需将valid_hours转换为对应的字符串格式,再生成笛卡尔积。
  • 如果需要覆盖连续完整日期范围(而非仅原数据中的日期):用pd.date_range生成日期序列,替换unique_dates:
    # 示例:生成2024-01-01到2024-01-31的所有日期
    full_dates = pd.date_range(start="2024-01-01", end="2024-01-31")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:01:14