基于下划线位置提取图片路径日期时间并转换为datetime类型
按下划线位置提取图片路径中的日期时间
场景说明
有一个仅包含ImagePath列的DataFrame,示例路径如下:
Images/LINE 58/AGSD/LUC/L58_AFND_K3_2022-10-12_23-53-18_Color_ID_511.jpg
需要提取其中的日期时间字符串:
2022-10-12_23-53-18
原代码依赖Color关键词实现提取,现需改为通过下划线位置(提取第3个到第5个下划线之间的内容)完成,避免关键词变化导致失效。
解决方案
方法1:正则表达式匹配下划线位置
直接用正则定位下划线位置提取目标片段,无需依赖固定关键词:
import pandas as pd # 提取日期时间字符串列 dfColor['DateTimeStr'] = dfColor['ImagePath'].str.extract(r'(?:[^_]*_){3}([^_]*_[^_]*)', expand=False) # 转换为datetime类型 dfColor['DateTime'] = pd.to_datetime(dfColor['DateTimeStr'], format='%Y-%m-%d_%H-%M-%S')
正则逻辑:
(?:[^_]*_){3}:匹配3组「非下划线字符+下划线」,精准定位到第3个下划线的位置([^_]*_[^_]*):捕获后续包含一个下划线的片段,即目标日期时间字符串
方法2:拆分字符串后取对应片段
拆分路径和文件名,再按下划线拆分取指定位置元素拼接,逻辑更直观易维护:
import pandas as pd # 拆分路径取文件名,再按下划线拆分所有部分 split_parts = dfColor['ImagePath'].str.split('/').str[-1].str.split('_') # 取第3、4个元素(索引从0开始)拼接成日期时间字符串 dfColor['DateTimeStr'] = split_parts.str[3] + '_' + split_parts.str[4] # 转换为datetime类型 dfColor['DateTime'] = pd.to_datetime(dfColor['DateTimeStr'], format='%Y-%m-%d_%H-%M-%S')
内容的提问来源于stack exchange,提问作者AGc
相关产品推荐
相关产品推荐

