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

如何正确使用pd.Series加载图片到列表并解决路径排序错误问题

问题原因

该问题不是pd.Series导致的,本质是Path.glob返回的文件列表默认按字符串字典序排序:字符串比较时"10"的首字符'1'ASCII码小于'2',所以10.tif会排在2.tif前面,最终和csv标签拼接时出现错位。

修正方法

提取文件名中的数字序号作为排序依据,对文件路径做自然排序后再生成Series,修改后代码如下:

import numpy as np
import pandas as pd
from pathlib import Path
import os.path

image_dir = Path('E:/Notebooks/s2_tiles')
cols = ["labels"]
# 先获取所有tif文件路径
file_list = list(image_dir.glob('**/*.tif'))
# 提取文件名(不含后缀)的数字作为排序键,按数字升序排序
file_list.sort(key=lambda x: int(x.stem))
# 排序后再生成Series
filepaths = pd.Series(file_list, name='Filepath').astype(str)
labels = pd.read_csv('E:/Notebooks/data.csv', sep=" ", header=None, names=cols)
images = pd.concat([filepaths, labels], axis=1)
特殊场景适配

如果你的文件名不是纯数字命名(例如格式为img_1.tif、img_2.tif),只需要修改排序键的提取逻辑即可,示例:

# 提取img_xxx.tif中的xxx数字部分作为排序键
file_list.sort(key=lambda x: int(x.stem.split('_')[1]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:09:03