最近有一个师弟要求我实现一个功能:
大概就是一个48*88*6的表格,其中88意思是一幅影像中88个样本点的DN值,而48则是48幅影像,整体的上一步工作就是他通过模型得到的结果,为48*88(4224)*6的表格,4224为行数,6为列数。
要求实现的功能即:把这个大表格按照顺序,每88行*6列导出为一个表格,一共导出48个小表格。
整体代码以python实现.,具体如下:
import numpy as np
import pandas as pd
import os
# 导入一些需要使用的包,包括pandas、numpy和系统包os
file_path = r"C:\Users\lachesis\Desktop\数据处理\8023.xlsx"
out_dir = r"C:\Users\lachesis\Desktop\数据处理\out"
step = 4
data_len = 16
# 输入路径和输出路径的设置,以及一些参数的设置(先使用了16*6的表格做测试)
# 文件名提取
file_name = os.path.basename(file_path) # abc.xlsx
file_name = file_name.split(".")[0] # abc
# 用pandas读取数据
data = pd.read_excel(io=file_path)
# 获取输出切片数据
out_datas = [] # 存放切片数据 [切片1 , 切片2, 。。。]
for i in range(0, data_len, step): # i 从0开始,到4224结束,88为步长
out_datas.append(data[:,i:i+step]) #
# 逐一导出数据
for i,temp in enumerate(out_datas):
df = pd.DataFrame(temp)
out_file_path = os.path.join(out_dir, f"{file_name}_{i}.xlsx")
df.to_excel(out_file_path)