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

使用pandas assign链式调用创建新列报错:file_path未定义

问题解决:Pandas链式调用assign创建新列的正确方式

错误原因

你在assign里直接写file_path会被Python解释为全局变量,而非当前链式调用中DataFrame的列,因此触发name 'file_path' is not defined错误。

修正后的代码

(
    pd.pivot(test, index=['file_path'], columns='year', values='file')
    .fillna(0)
    .astype(int)
    .reset_index()
    # 用lambda引用当前DataFrame,通过参数访问列
    .assign(hierarchy=lambda df: df['file_path'].str.split('\\').str[1:-1].str.join(' > '))
)

关键说明

  1. 引用当前DataFrame:在链式调用的assign方法中,必须通过lambda表达式接收当前DataFrame(示例中用df作为参数),再通过df['列名']的方式访问已有列。
  2. 路径层级处理修正:你原代码中file_path.str[1:-1]是对字符串本身做字符切片,无法正确拆分路径层级。需要先用str.split('\\')将Windows路径按反斜杠分割为列表,再对列表切片str[1:-1]提取中间层级,最后用str.join(' > ')拼接成目标格式。

修正后示例输出

处理后的DataFrame会新增hierarchy列,效果如下:

file_path2017201820192020hierarchy
S:\Test\A0012Test
S:\Test\A\B1013Test > A
S:\Test\A\C3110Test > A
S:\Test\B\A1001Test
S:\Test\B\B1001Test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:35:26