如何用pandas拆分CSV路径列并跳过固定前缀提取目标字段
Pandas 固定前缀路径拆分实现方案
你不需要修改.str.split()的拆分规则,只要在拆分后过滤掉固定前缀对应的列,或者先移除固定前缀再拆分即可,两种实现方式都可以满足需求。
方法1:拆分后直接切片取目标列(最简便,适合前缀完全固定的场景)
你的示例路径按/拆分后,固定前缀w:b/c/v/n会固定占据前4列(拆分后索引0到3分别为w:b、c、v、n),之后连续3列正好是你需要提取的内容,直接切片取用即可:
import pandas as pd # 读取CSV文件,替换为你的实际文件路径 df = pd.read_csv("your_target_file.csv") # 拆分路径列,expand=True生成结构化多列,切片取前缀之后的3个层级 path_parts = df["你的路径列名"].str.split("/", expand=True).iloc[:, 4:7] # 为新列设置自定义列名 path_parts.columns = ["层级1", "层级2", "层级3"] # 将新列拼接到原表,保留原有所有列数据 df = pd.concat([df, path_parts], axis=1) # 导出处理完成的文件 df.to_csv("processed_result.csv", index=False)
方法2:先移除固定前缀再拆分(鲁棒性更强,适合前缀前内容不固定的场景)
如果路径开头的盘符(比如示例里的w:)可能变动,但b/c/v/n这个固定前缀段本身不会变,可以先把前缀及之前的内容全部截掉,再拆分剩余部分:
import pandas as pd df = pd.read_csv("your_target_file.csv") # 以固定前缀"b/c/v/n/"为分隔符拆分,取后半段再按/拆分 path_parts = df["你的路径列名"].str.split("b/c/v/n/", expand=True)[1]\ .str.split("/", expand=True) path_parts.columns = ["层级1", "层级2", "层级3"] df = pd.concat([df, path_parts], axis=1) df.to_csv("processed_result.csv", index=False)
效果验证
用你提供的示例路径测试,最终生成的3个新列内容完全匹配预期:
| 层级1 | 层级2 | 层级3 |
|---|---|---|
| 1 | y | i |
| 2 | h | l |
| 3 | n | r |
| 4 | f | e |
注意:使用时请把代码里的
你的路径列名替换为CSV文件中存储文件路径的实际列名即可。
内容的提问来源于stack exchange,提问作者user15788706
相关产品推荐
相关产品推荐

