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

如何从目录中的多个热像仪CSV文件提取中心像素值并添加至DataFrame

解决提取CSV中心像素值并整合到DataFrame的问题

你已经成功搭建了包含所有CSV文件名的DataFrame,接下来只需要遍历每个文件,读取指定位置的中心像素值,再把这个值合并到原DataFrame里就完成目标了。这里要特别注意:Python的索引是从0开始计数的,你提到的坐标144×191,对应的应该是行索引143,列索引190(假设你的CSV文件每行对应热像仪的一行像素,共288行、每行383个像素值)。

下面是完整的实现方案,我会附带详细说明:

完整代码

import os
import glob
import numpy as np
import pandas as pd

# 设置工作目录到CSV文件所在路径
os.chdir("/Programming/Proj1/Code/Image_Data")

# 获取目录下所有CSV文件名
file_extension = '.csv'
all_filenames = glob.glob(f"*{file_extension}")

# 创建存储文件名的初始DataFrame
all_df = pd.DataFrame(all_filenames, columns=['Full_name'])

# 定义函数:读取单个CSV的中心像素值
def get_center_pixel(file_path):
    # 用numpy读取纯数值的像素数据,比pandas更高效
    pixel_data = np.loadtxt(file_path, delimiter=',')
    # 转换为0开始的索引:144→143,191→190
    center_value = pixel_data[143, 190]
    return center_value

# 给DataFrame添加新列,批量提取所有文件的中心像素值
all_df['Center_Pixel_Value'] = all_df['Full_name'].apply(get_center_pixel)

# 查看处理后的结果
all_df.head()

关键细节说明

  • 高效读取数据:用np.loadtxt处理纯数值的像素CSV比pd.read_csv更节省内存、速度更快,适合批量处理大量文件。
  • 索引转换:热像仪分辨率288×383对应numpy数组的形状是(288, 383),所以第144行第191列的像素,必须用[143, 190]来索引,否则会取错位置。
  • 批量处理逻辑:用apply方法遍历DataFrame中的文件名列,自动调用提取函数,代码简洁易维护。

针对超大量文件的优化方案

如果你的CSV文件数量多达上千个,可以用并行处理来利用多核CPU加速:

from multiprocessing import Pool

# 开启多进程并行处理
with Pool() as pool:
    all_df['Center_Pixel_Value'] = pool.map(get_center_pixel, all_df['Full_name'])

处理完成后,你会得到类似这样的结果:

Full_nameCenter_Pixel_Value
2021-09-13_13-42-16.csv32.7
2021-09-13_13-42-22.csv33.2
2021-09-13_13-42-29.csv32.9

内容的提问来源于stack exchange,提问作者Tiago C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:42:40