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

使用Pandas和Plotly绘制起止日期图表时结束日期不显示的解决方法

解决日期范围筛选后20日数据不显示的问题

以下是针对你遇到的问题的排查和解决建议:

  • 确认日期列类型并转换
    首先检查received_at列是否为datetime类型,字符串格式的日期比较容易出现逻辑偏差。执行以下代码查看并转换:

    print(df['received_at'].dtype)  # 查看数据类型
    # 若为object类型,转换为datetime
    df['received_at'] = pd.to_datetime(df['received_at'])
    start_date = pd.to_datetime('2022-12-18')
    end_date = pd.to_datetime('2022-12-20')
    
  • 调整筛选的时间边界
    如果end_date仅指定日期(默认对应当日00:00:00),<= end_date会排除20日当天所有非0点的数据。可以通过两种方式修正:

    # 方式1:将结束时间设为次日0点,用<进行比较
    end_date = pd.to_datetime('2022-12-21')
    mask = (df['received_at'] >= start_date) & (df['received_at'] < end_date)
    # 方式2:直接指定20日的最晚时间
    end_date = pd.to_datetime('2022-12-20 23:59:59')
    mask = (df['received_at'] >= start_date) & (df['received_at'] <= end_date)
    
  • 修正Kwh1列的赋值错误
    你的代码中使用原数据df提取Kwh1,应该改为筛选后的df2,避免数据不匹配:

    df2['Kwh1'] = df2['object'].str.get('Kwh1')
    
  • 验证筛选结果
    筛选完成后,先确认df2是否包含20日的数据:

    # 查看筛选后日期的最大最小值
    print(df2['received_at'].min())
    print(df2['received_at'].max())
    # 直接查看20日的所有数据
    target_date = pd.to_datetime('2022-12-20').date()
    print(df2[df2['received_at'].dt.date == target_date])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:35:28