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

pandas新增列触发SettingWithCopyWarning警告的修复方法

问题根源

警告并非来自你写的创建月份列、分组聚合的两行代码本身,问题出在daytime_data的生成环节:它是你从其他原始DataFrame通过条件筛选、切片得到的结果,pandas无法自动判定它是原数据的视图(修改会同步改动原数据)还是独立副本(修改不影响原数据),因此在你给它新增列时弹出风险提示,避免出现“以为改了数据实际没生效”或者“误改原始数据”的隐蔽问题。
你当前代码的运行结果大概率是正确的,这个警告不是报错,只是提示存在不规范的歧义写法。

修复方法
  • 优先推荐方案(最稳妥):在最初生成daytime_data的切片代码末尾显式加.copy(),明确声明这是独立副本,后续所有操作都不会再触发这类警告。
    比如你之前生成daytime_data的代码如果是类似的筛选逻辑:

    # 原切片逻辑示例:筛选白天时段的交通数据
    daytime_data = traffic_data[traffic_data['day_period'] == 'day']
    

    修改为:

    daytime_data = traffic_data[traffic_data['day_period'] == 'day'].copy()
    

    改完之后你原来写的新增月份列、分组统计的代码完全不需要调整,直接运行即可:

    daytime_data['month'] = daytime_data['date_time'].dt.month
    by_month = daytime_data.groupby('month').mean()
    print(by_month['traffic_volume'])
    
  • 临时修复方案:按照警告提示,把新增列的赋值语句改成.loc显式索引写法:

    daytime_data.loc[:, 'month'] = daytime_data['date_time'].dt.month
    

    注意:如果daytime_data本身是未声明副本的切片,部分pandas版本下这个写法依然会弹出警告,优先用第一种方案。

内容的提问来源于stack exchange,提问作者Álvaro V.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.08 16:15:16