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

pandas处理谷歌搜索控制台数据时报NoneType无date属性错误求解

问题根因

报错核心原因是df变量实际为None,导致无法访问date属性触发AttributeError,具体诱因如下:

  • 调用get_search_console_data时传入的webproperty参数为None,函数仅打印提示信息、没有显式返回值,默认返回None赋值给了df
  • 少数场景下即使webproperty有效,谷歌搜索控制台接口返回的r.rows为空时,生成的DataFrame也不存在date字段,同样会触发属性报错
  • 额外注意:代码中df.date的写法存在隐患,建议统一使用df["date"]访问字段,避免列名和pandas内置属性重名时出现异常
  • 冗余代码提示:df[df["date"] > "2021-10-3"]这行没有赋值操作,无实际业务作用

修复方案

1. 调整函数逻辑,补充异常返回处理

import pandas as pd

def get_search_console_data(webproperty, days=-365):
    if webproperty is None:
        print("Web property doesn't exist, please select a valid one from this list")
        print(account.webproperties)
        # 异常场景返回空DataFrame而非None,避免后续操作报错
        return pd.DataFrame()
    query = webproperty.query.range(start='today', days=days).dimension('date', 'query')
    r = query.get()
    df = pd.DataFrame(r.rows)
    return df

df = get_search_console_data(webproperty)

2. 补充合法性校验后执行数据处理

# 先判断df非空且存在date字段再操作
if not df.empty and "date" in df.columns:
    df["date"] = pd.to_datetime(df["date"])
    # 复用过滤条件减少重复计算
    filter_after = df["date"] > "2021-10-03"
    filter_before = df["date"] < "2021-10-03"
    last_day_queries = df.loc[filter_after, "query"]
    rest_of_queries = df.loc[filter_before, "query"]
else:
    print("未获取到有效搜索控制台数据,请检查webproperty配置和接口返回结果")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:39:03