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

如何移除DataFrame中file_name列路径的前5个目录?

问题解决方法

你报错的原因是:file_paths = [x[5:] for x in file_paths]生成的是列表的列表(每个元素都是类似['f', 'file1.c']的子列表),而"".join()只能拼接字符串序列,把列表直接塞进去自然会触发类型错误。

下面是几种可行的解决方式:


方法1:Pandas链式字符串操作(最简洁高效)

直接用Pandas的str方法链式处理,无需手动循环:

# 拆分路径 → 取从第6个元素开始的部分 → 用/拼接成完整路径
df_function["file_name"] = df_function["file_name"].str.split("/").str[6:].str.join("/")

为什么用str[6:]?因为你的路径/a/b/c/d/e/f/file1.c用/拆分后会得到['', 'a', 'b', 'c', 'd', 'e', 'f', 'file1.c']:

  • 索引0是空字符串(对应路径开头的/)
  • 索引1-5是你要移除的前5个目录(a到e)
  • 从索引6开始就是需要保留的部分(f和file1.c)

方法2:手动循环处理

如果习惯写循环逻辑,记得给每个子列表单独做拼接:

file_paths = df_function["file_name"].str.split("/")
# 遍历每个拆分后的子列表,截取目标部分再用/拼接
new_file_paths = ["/".join(x[6:]) for x in file_paths]
df_function["file_name"] = new_file_paths

方法3:用pathlib处理(更稳健)

如果路径存在特殊情况(比如相对路径、重复/),用pathlib处理更靠谱:

from pathlib import Path

def trim_path(path):
    parts = Path(path).parts
    # 跳过前6个路径部分,拼接剩余内容
    return "/".join(parts[6:])

df_function["file_name"] = df_function["file_name"].apply(trim_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:45:20