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

DataFrame前10列列名截取后赋值返回None,请求排查解决

问题排查与解决方案

问题根源

你遇到的dfr变为None的原因有两个:

  • 当使用inplace=True参数时,rename方法会直接修改调用它的DataFrame对象,返回值为None,你把这个None赋值给了dfr,导致变量被覆盖。
  • iloc[:,1:11]只截取了原DataFrame的前10列(索引1到10,左闭右开),这样操作会丢失原数据的其余列,不符合你“其余列无需修改”的需求。

正确实现方式

我们需要只修改前10列的列名,同时保留所有列,避免返回None的情况,有两种常用写法:

写法一:生成新的DataFrame(推荐,避免原地修改可能带来的副作用)

# 获取需要修改的前10列的列名(索引1到10)
target_cols = dfr.columns[1:11]
# 构造列名映射字典:原列名 → 截取后75位之后的列名
rename_map = {col: col[75:] for col in target_cols}
# 重命名指定列,返回修改后的新DataFrame
dfr = dfr.rename(columns=rename_map)

写法二:原地修改原DataFrame

如果你确实需要直接修改原对象,可以使用inplace=True,但不要赋值给原变量:

target_cols = dfr.columns[1:11]
rename_map = {col: col[75:] for col in target_cols}
# 原地修改列名,无需赋值
dfr.rename(columns=rename_map, inplace=True)

两种写法都会只修改索引1到10的列名,其余列保持不变,也不会出现dfr变为None的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:30:53