遍历CSV文件计算指标后生成指定格式新DataFrame的技术需求
嘿,我来帮你搞定这个需求~
解决方案
咱们需要解决两个核心问题:从完整文件路径中提取纯文件名,以及将每个文件的计算结果规整成新的DataFrame。这里可以借助Python的os模块处理路径,再用列表统一收集结果后转成DataFrame,操作起来很顺畅。
修改后的完整代码
import glob import pandas as pd import os # 导入os模块处理路径 # 获取目标文件夹下所有CSV文件的完整路径 file_paths = glob.glob(r'C:\Users\Desktop\files\*.csv') # 初始化空列表,用来存储每个文件的计算结果 results = [] # 遍历每个文件路径 for path in file_paths: # 提取纯文件名(自动去掉前面的完整路径) file_name = os.path.basename(path) # 读取CSV文件(保持你原来的header=1设置) df = pd.read_csv(path, header=1) # 这里放你原来的数据处理逻辑,计算当前文件的avg和sum # 示例:假设你是对某列进行计算,替换成你实际的代码即可 avg = df['target_column'].mean() # 替换成你的平均值计算逻辑 sum_val = df['target_column'].sum() # 用sum_val避免和内置函数sum重名 # 将当前文件的结果以字典形式加入列表 results.append({ '文件名': file_name, '平均值': avg, '求和值': sum_val }) # 将结果列表转换成最终的DataFrame final_result_df = pd.DataFrame(results) # 可以打印查看结果,或者导出成CSV print(final_result_df)
关键细节说明
- 提取纯文件名:
os.path.basename(path)是核心,它会自动截取路径的最后一段,比如C:\Users\Desktop\files\sales_2024.csv会直接变成sales_2024.csv,完全符合你要的只显示文件名的需求。 - 结果收集方式:用字典列表存储每个文件的信息,结构清晰,后续转DataFrame时会自动对应成列,不用手动处理列名和数据的对应关系。
- 避免命名冲突:把原来的
sum变量改成sum_val,防止和Python内置的sum()函数重名,避免潜在的运行bug。
如果你的数据处理逻辑已经能正确算出avg和sum,只需要把代码中对应的计算部分替换掉就行,运行后final_result_df就是你想要的包含文件名、平均值、求和值的新DataFrame啦~
内容的提问来源于stack exchange,提问作者Shiv948
相关产品推荐
相关产品推荐

