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

Python pandas代码运行报AttributeError: 'NoneType' object has no attribute 'date'问询

报错原因分析及修复方案

报错根因

触发AttributeError: 'NoneType' object has no attribute 'date'的核心原因是代码中的df变量为空值(None),同时还存在多处隐藏问题会导致后续运行报错:

  • 函数返回值异常:当入参webproperty为None时,get_search_console_data仅打印提示信息,没有显式返回值,Python会默认返回None,后续直接调用df.date就会触发该报错
  • 列名缺失:就算webproperty正常传值,pd.DataFrame(r.rows)生成的DataFrame默认列名为0、1,不存在date字段,后续访问df.date同样会报错
  • 缩进错误:df["date"] = pd.to_datetime(df.date)等行的缩进层级错误,会触发语法报错或在非预期分支下执行

完整修复代码

import pandas as pd

def get_search_console_data(webproperty, days=-365):
    if webproperty is not None:
        query = webproperty.query.range(start='today', days=days).dimension('date', 'query')
        r = query.get()
        # 生成DataFrame时指定对应维度的列名
        df = pd.DataFrame(r.rows, columns=['date', 'query'])
        return df
    # 异常分支返回空DataFrame,避免返回None
    print("Web property doesn't exist, please select a valid one from this list")
    print(account.webproperties)
    return pd.DataFrame()

df = get_search_console_data(webproperty)

# 仅当df非空时执行数据处理逻辑
if not df.empty:
    df["date"] = pd.to_datetime(df["date"])
    target_date = pd.to_datetime("2021-10-3")
    last_day_queries = df[df["date"] > target_date]["query"]
    rest_of_queries = df[df["date"] < target_date]["query"]
else:
    # 空df兜底逻辑
    last_day_queries = pd.Series(dtype='object')
    rest_of_queries = pd.Series(dtype='object')

修复说明

  • 异常分支返回空DataFrame而非默认None,从根源避免空值属性访问报错
  • 生成DataFrame时显式指定columns参数,确保date、query字段存在
  • 增加df非空判断,所有数据处理逻辑仅在df有有效数据时执行
  • 统一将对比日期转为datetime格式,避免字符串日期比较的格式兼容性问题
  • 修复缩进错误,保证代码执行逻辑符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:15:02