如何从DataFrame路径列提取文件名并移除可变的images/[数字]/前缀
移除DataFrame路径列中的固定前缀部分
针对需要移除filename列中images/[数字]/前缀的需求,这里提供几种简洁的实现方式:
方法1:正则表达式替换
利用正则匹配images/+任意数字+/的前缀模式,直接替换为空字符串:
import pandas as pd # 读取无表头的空格分隔数据 data = pd.read_csv('/media/cvpr/CM_24/synthtiger/results/gt.txt', sep="\s+", header=None) # 设置列名 data.columns = ['filename', 'words'] # 移除前缀:匹配以images/数字/开头的部分并替换为空 data['filename'] = data['filename'].str.replace(r'^images/\d+/', '', regex=True) # 保存为csv(index=False避免生成默认索引列) data.to_csv('labels.csv', index=False)
方法2:字符串分割取最后一段
不管中间的数字是什么,直接通过分割路径取最后一段文件名:
import pandas as pd data = pd.read_csv('/media/cvpr/CM_24/synthtiger/results/gt.txt', sep="\s+", header=None) data.columns = ['filename', 'words'] # 按/分割路径,取最后一个元素 data['filename'] = data['filename'].str.split('/').str[-1] data.to_csv('labels.csv', index=False)
方法3:用pathlib处理路径(更优雅的路径操作方式)
借助Python内置的pathlib模块专门处理路径,提取文件名:
import pandas as pd from pathlib import Path data = pd.read_csv('/media/cvpr/CM_24/synthtiger/results/gt.txt', sep="\s+", header=None) data.columns = ['filename', 'words'] # 提取路径中的文件名部分 data['filename'] = data['filename'].apply(lambda x: Path(x).name) data.to_csv('labels.csv', index=False)
内容的提问来源于stack exchange,提问作者Khawar Islam
相关产品推荐
相关产品推荐

