You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现多文件夹多图像的像素强度数据导出至Excel

解决Pandas导出多文件夹数据仅保留最后一项的问题

问题原因

你原来的代码在循环遍历文件夹时,每次计算出的ratios都会覆盖上一次的结果,最后只有最后一个文件夹的ratios被存入DataFrame,自然就丢失了前面所有文件夹的数据。

修复方案

我们需要先把每个文件夹的ratios收集到一个统一的列表中,再将这个列表转换为DataFrame——这样每个文件夹的比值列表就会对应Excel里的单独一行。如果不同文件夹的图片数量不一样,Pandas会自动用NaN填充空缺的位置,保证格式整齐。

修改后的完整代码

import os
import matplotlib.pyplot as plt
import skimage.external.tifffile as tiff
import pandas as pd
from pandas import DataFrame

# 读取文件夹中的所有tif图像
def load_images_from_folder(folder):
    images = []
    # 按文件名排序,保证延时摄影的时间点顺序正确
    for filename in sorted(os.listdir(folder)):
        if filename.endswith('.tif'):
            img = tiff.imread(os.path.join(folder, filename))
            if img is not None:
                images.append(img)
    return images

folders = [
    'path to folder1',
    'path to folder2',
    'path to folder3',
]

# 初始化列表,用来存储所有文件夹的比值数据
all_ratios = []
# 存储文件夹名称,方便后续识别每行对应的文件夹
folder_names = []

for folder in folders:
    images = load_images_from_folder(folder)
    # 计算绿通道均值/红通道均值的比值列表
    ratios = [image[..., 1].mean() / image[..., 0].mean() for image in images]
    plt.plot(range(len(images)), ratios)
    plt.title(os.path.basename(folder))  # 给每个折线图加上文件夹名称,方便区分
    plt.show()
    
    # 将当前文件夹的比值列表加入总列表
    all_ratios.append(ratios)
    # 记录文件夹名称
    folder_names.append(os.path.basename(folder))

# 将收集到的所有数据转换为DataFrame,每行对应一个文件夹
# 用文件夹名称作为行索引,让Excel数据更直观
df = pd.DataFrame(all_ratios, index=folder_names)
# 给列命名为"时间点1"、"时间点2"...,便于理解每个列对应的拍摄时间
df.columns = [f'时间点{i+1}' for i in range(df.shape[1])]

# 导出到Excel
df.to_excel('Ratios.xlsx', sheet_name='sheet1')

关键修改点说明

  • 新增all_ratios列表,用来累积每个文件夹的比值数据,避免被循环覆盖
  • 新增folder_names列表,记录每个文件夹的名称并作为DataFrame的行索引,让Excel里的数据一目了然
  • 对os.listdir的结果做了sorted()排序——延时摄影的文件通常按时间编号,排序后能保证比值列表的顺序和实际拍摄时间完全对应(这一步很容易被忽略,但对数据准确性至关重要)
  • 导出的DataFrame每行对应一个文件夹,每列对应一个时间点的比值,空缺位置自动填充NaN,保证表格格式整齐

这样修改后,你打开Excel就能看到每个文件夹的比值列表单独占一行啦!

内容的提问来源于stack exchange,提问作者JurgK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:35:08