将DataFrame中部分文件名匹配至完整文件名并复制文件
没问题,我来帮你搞定这个需求——把DataFrame里的前缀匹配到完整文件名,再复制到新路径。下面是一步步的实现方案和代码示例:
实现步骤与代码
1. 先获取所有完整文件名并建立前缀映射
首先我们需要遍历源文件目录,把所有符合id_year_month_day#hour_min_sec.csv格式的文件找出来,然后建立「前缀(比如1001_2017_01_02)」到「完整文件路径」的映射关系,这样后续匹配起来更高效。
import pandas as pd import glob import os import shutil # 替换成你的源文件目录 source_dir = "/your/source/files/directory" # 获取所有符合格式的csv文件 full_file_paths = glob.glob(os.path.join(source_dir, "*.csv")) # 构建前缀到完整文件路径的字典 prefix_full_map = {} for file_path in full_file_paths: # 提取文件名(不带路径) filename = os.path.basename(file_path) # 分割出#之前的前缀部分 prefix = filename.split("#")[0] # 如果有多个文件对应同一个前缀,这里会保留最后一个,若要保留所有可改成列表存储 prefix_full_map[prefix] = file_path
2. 把DataFrame中的前缀匹配到完整文件路径
假设你的DataFrame名为prefix_df,其中存储前缀的列叫prefix,我们可以用map快速完成匹配,同时过滤掉匹配失败的行(比如前缀找不到对应文件的情况)。
# 给原DataFrame添加完整文件路径列 prefix_df["full_file_path"] = prefix_df["prefix"].map(prefix_full_map) # 过滤掉匹配失败的行(full_file_path为NaN的行) matched_df = prefix_df.dropna(subset=["full_file_path"]).reset_index(drop=True)
3. 复制匹配到的文件到新路径
最后一步就是把匹配到的文件复制到目标目录,我们会先确保目标目录存在,再逐个复制,同时处理可能的异常情况。
# 替换成你的目标目录 target_dir = "/your/target/files/directory" # 确保目标目录存在,不存在则创建 os.makedirs(target_dir, exist_ok=True) # 遍历匹配结果,复制文件 for _, row in matched_df.iterrows(): source_path = row["full_file_path"] target_filename = os.path.basename(source_path) target_path = os.path.join(target_dir, target_filename) try: # copy2会保留文件元数据,比copy更合适 shutil.copy2(source_path, target_path) print(f"✅ 成功复制: {source_path} → {target_path}") except Exception as e: print(f"❌ 复制失败 {source_path}: {str(e)}")
额外注意事项
- 如果存在同一个前缀对应多个完整文件的情况(比如同一个ID和日期下有多个时间点的文件),上面的字典会只保留最后一个匹配的文件。如果需要保留所有匹配项,可以把字典的值改成列表,比如:
后续处理时需要遍历列表里的所有文件进行复制。prefix_full_map = {} for file_path in full_file_paths: filename = os.path.basename(file_path) prefix = filename.split("#")[0] if prefix not in prefix_full_map: prefix_full_map[prefix] = [] prefix_full_map[prefix].append(file_path) - 路径建议用绝对路径,避免因工作目录变化导致的路径错误。
- 如果不想覆盖目标目录中已存在的文件,可以在复制前添加判断:
if not os.path.exists(target_path):
内容的提问来源于stack exchange,提问作者e.matt
相关产品推荐
相关产品推荐

