如何提取无后缀文件名并解决pandas中纯数字文件名出现.0的问题
问题原因
你遇到的.0后缀问题是两个代码逻辑错误共同导致的:
- 没有提前初始化
xmlfilename列,逐行赋值时pandas会自动将纯数字的文件名识别为浮点型 - 把整列转字符串的
astype(str)操作放在循环体内,每处理一行就对全列做一次类型转换,不仅效率极低,还会把浮点型的数字直接转成带.0的字符串
解决方法
方案1(推荐):用向量化操作替代循环
pandas的向量化操作会自动统一处理类型,不会出现自动转浮点的问题,同时运行效率远高于逐行遍历:
from pathlib import Path dffinalselection['xmlfilename'] = dffinalselection['relfilepath'].apply(lambda x: Path(x).stem).astype(str)
方案2:修复原有循环逻辑
如果必须用循环实现,提前初始化xmlfilename列为字符串类型,同时把类型转换操作移出循环:
from pathlib import Path # 提前初始化为字符串类型空列 dffinalselection['xmlfilename'] = '' for i, row in dffinalselection.iterrows(): # 用loc赋值避免链式索引警告 dffinalselection.loc[i, 'xmlfilename'] = Path(row['relfilepath']).stem
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

