如何在Python的pandas DataFrame、Series中查找唯一文件扩展名
pandas提取CSV路径列唯一扩展名实现方案
实现思路
- 读取CSV文件获取
images_path和text_path两列路径数据 - 对每一条路径字符串提取最后一个
.后的内容作为扩展名,同时处理空值、空白字符等异常情况 - 合并两列提取到的扩展名,去重后得到最终的唯一扩展名列表
- 可选:统一转为小写/大写,避免
JPG和jpg因大小写差异被判定为不同扩展名
完整实现代码
import pandas as pd import os # 替换为你的CSV文件实际路径 df = pd.read_csv("your_file_path.csv", usecols=["images_path", "text_path"]) def get_file_extension(path): # 过滤空路径 if pd.isna(path): return None # 去除路径首尾空白字符,拆分获取扩展名 ext = os.path.splitext(path.strip())[1].lstrip(".") # 不需要统一大小写可删除下方的.lower() return ext.lower() if ext else None # 分别提取两列的扩展名 image_extensions = df["images_path"].apply(get_file_extension) text_extensions = df["text_path"].apply(get_file_extension) # 合并两列结果、去重、过滤空值 unique_extensions = pd.concat([image_extensions, text_extensions]).dropna().unique() # 输出结果,也可调用.tolist()转为Python列表格式 print("所有唯一文件扩展名:") print(unique_extensions)
可选优化(适合大数据量场景)
如果你的CSV数据量超过10万条,可以用pandas矢量化操作替代apply循环,提升处理性能:
# 替换原apply逻辑即可,其余代码不变 image_extensions = df["images_path"].str.strip()\ .str.rsplit(".", n=1).str[-1]\ .where(df["images_path"].str.contains("\.", na=False), None)\ .str.lower() text_extensions = df["text_path"].str.strip()\ .str.rsplit(".", n=1).str[-1]\ .where(df["text_path"].str.contains("\.", na=False), None)\ .str.lower()
内容的提问来源于stack exchange,提问作者Moon
相关产品推荐
相关产品推荐

