Python根据文件名日期匹配CSV对应Count值作为networkx标签问题
实现方案
这个需求完全可以实现,核心是先把CSV的日期和Count映射关系做成查询字典,再批量解析每个文件名的日期后匹配即可,具体操作如下:
步骤1:预处理参考CSV生成映射字典
先读取存储日期和Count的CSV文件,统一日期格式后生成日期:Count的查询字典,避免后续重复遍历匹配:
import pandas as pd import os import glob # 读取参考CSV,注意指定日期格式为日/月/年,避免pandas解析错误 ref_df = pd.read_csv('你的参考CSV文件路径.csv') ref_df['Date'] = pd.to_datetime(ref_df['Date'], format='%d/%m/%Y') # 转为字典,key是datetime格式的日期,value是对应Count date_count_map = dict(zip(ref_df['Date'], ref_df['Count']))
步骤2:批量解析文件名日期并匹配Count
不推荐用固定切片取日期,容易因为路径长度变化出错,改用字符串分割的方式提取更稳定:
path = r'你的Graphs文件夹路径' csv_files = glob.glob(os.path.join(path, "*.csv")) dataframes = [] labels = [] for csv_file in csv_files: # 读取文件存入列表 df = pd.read_csv(csv_file) dataframes.append(df) # 提取文件名里的第二个日期 file_name = os.path.basename(csv_file) # 拿到纯文件名,例如graph_2020-08-04_2020-08-17.csv date_part = file_name.split('_')[-1].replace('.csv', '') # 分割后取最后一段,去掉后缀得到2020-08-17 file_date = pd.to_datetime(date_part) # 匹配Count,没匹配到默认返回0,可自行修改默认值 count = date_count_map.get(file_date, 0) labels.append(count)
步骤3:后续构建networkx图直接使用labels即可
只要你生成graphs列表的顺序和遍历csv_files的顺序保持一致,labels列表里的Count就和每个graph一一对应,直接用原有逻辑赋值即可:
# 你原有构建graphs的逻辑,确保顺序和csv_files一致 graphs = [] # 你的建图代码... # 直接用已经生成的labels列表即可
内容的提问来源于stack exchange,提问作者Landon
相关产品推荐
相关产品推荐

