能否将.txt文件名后缀作为Python字典的动态键补全计算变量?
解决思路与代码实现
一、建立后缀与缺失值的映射字典
先把13个后缀和对应的A值一一对应,写成字典(键用字符串格式,和文件名后缀完全匹配):
# 示例:根据你的实际缺失值替换 suffix_A_map = { "_01": 1.2, "_12": 3.5, "_03": 0.8, # 补充剩余10个后缀及对应A值 }
二、提取文件名后缀并关联字典值
读取文件时,从文件名里拆分出后缀,再用字典拿到对应的A值,之后完成计算:
import os import pandas as pd # 替换成你的txt文件所在文件夹路径 folder_path = "./measurements" for file_name in os.listdir(folder_path): if not file_name.endswith(".txt"): continue # 提取后缀:比如从"test_01.txt"中得到"_01" # 这里假设后缀是文件名最后一个下划线到.txt前的部分,根据你的命名规则调整 suffix = "_" + file_name.split("_")[-1].replace(".txt", "") # 获取对应的A值,若后缀不在字典里则跳过并提示 A_value = suffix_A_map.get(suffix) if A_value is None: print(f"跳过文件{file_name}:未找到对应后缀的A值") continue # 读取txt文件为DataFrame,分隔符根据你的数据调整(比如空格、制表符) df = pd.read_csv(os.path.join(folder_path, file_name), sep="\t") # 计算J=I*A,假设I列的列名为"I",根据实际列名修改 df["J"] = df["I"] * A_value # 可选:保存处理后的文件 df.to_csv(os.path.join(folder_path, f"processed_{file_name}"), sep="\t", index=False)
三、解决TypeError问题
你碰到的TypeError: unsupported operand type(s) for *: 'int' and 'dict',是因为直接用了字典对象去和DataFrame的数值列相乘,而没有取出字典里对应键的具体数值。上面的代码里用suffix_A_map.get(suffix)拿到的是具体的数值(比如1.2、3.5这类),直接和I列的数值相乘就不会报错,完全不需要用元组。
内容的提问来源于stack exchange,提问作者Bogus
相关产品推荐
相关产品推荐

