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

生成NBA比赛target列时,如何用pd.concat解决DataFrame碎片化警告

解决Pandas分组添加列时的碎片化性能警告问题

你原本通过分组后在每个子DataFrame里插入target列的方式,会因为多次执行列插入操作导致DataFrame碎片化,触发性能警告。改用pd.concat的核心思路是先一次性生成目标列,再和原数据合并,避免频繁的列插入操作。

直接用下面的代码替代原来的groupby+apply逻辑:

import pandas as pd

# 按球队分组对won列做下移一位操作,得到target列的Series
target_col = df.groupby("team")["won"].shift(-1).rename("target")
# 把原DataFrame和新生成的target列合并
df = pd.concat([df, target_col], axis=1)

为什么这样能解决问题?

原来的apply方法会对每个球队的分组DataFrame单独执行group["target"] = ...,相当于多次调用insert操作,这是导致DataFrame碎片化的根源。而上面的方式是先通过分组计算直接生成完整的target列(和原DataFrame索引完全对齐),再通过pd.concat一次性合并所有列,从根本上避免了多次插入的问题,性能更优。

如果执行后仍有碎片化提示,只需最后加上一行:

df = df.copy()

这会生成一个连续内存的新DataFrame,彻底消除碎片化问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:46:21