如何用Python从文件名提取参数与值并构建DataFrame?
实现步骤
1. 编写参数提取函数
针对文件名的格式,用正则表达式匹配目标参数与对应数值,编写提取函数:
import re from zipfile import ZipFile import pandas as pd def extract_params(filename): # 定义各参数的匹配规则 param_patterns = { 'H': r'H(\d+)', 'RW': r'RW(\d+)', 'Lc': r'Lc(\d+)', 'G': r'G(\d+)', 'W': r'W(\d+)' } params = {} for param, pattern in param_patterns.items(): match_result = re.search(pattern, filename) if match_result: params[param] = int(match_result.group(1)) return params
2. 遍历压缩包提取所有文件参数
用ZipFile遍历压缩包内文件,对每个文件名调用提取函数,收集参数数据:
params_collection = [] with ZipFile('DeviceData.zip', 'r') as zip_file: for file_name in zip_file.namelist(): # 仅处理csv格式文件,可根据实际需求调整过滤规则 if file_name.endswith('.csv'): file_params = extract_params(file_name) params_collection.append(file_params)
3. 构建DataFrame
将收集到的参数列表转换为DataFrame,可按需处理缺失值:
df = pd.DataFrame(params_collection) # 示例:用0填充缺失参数值并转为整数类型 df = df.fillna(0).astype(int) # 查看结果 print(df)
关键注意点
- 正则匹配规则是针对给定的文件名格式设计的,若后续文件名格式变动,需同步调整对应正则模式
- 使用
with语句操作压缩包可自动释放资源,避免文件占用问题 - 若存在参数缺失的文件,DataFrame会自动填充
NaN,可根据业务需求选择填充默认值或删除无效行
内容的提问来源于stack exchange,提问作者Gadeela Koushik
相关产品推荐
相关产品推荐

