1.需求
今天有同学问我一个小需求,如下:
要把以上excel表格中8点、14点、20点的数据,提取出来,然后转换成如下excel数据:
这里表格中sheet_name太多,复制、粘贴太过于枯燥! 哭哭哭!
2.使用pandas处理
每个excel表格中sheet_name都是从 0629 到 0903,而且每个sheet_name数据都是一样的,我们读取一个sheet_name之后就可以循环读取,手动复制、粘贴太枯燥了…
2.1 观察数据
我们先读取这个表格:
import numpy as np
import pandas as pd
path = r'C:\Users\JackYang\Desktop\数据处理\1仓.xlsx'
data = pd.read_excel(path, sheet_name='0629')
print(data.iloc[1, 6])
data
2.2 先读取表格中的一个sheet页
8点、14点、20点每个数据之间相差的间隔都是 4。这里我们就可以求出8点的数据后,使用循环,代码如下:
def read_sheet(path, begin_sheet_name: str):
print(begin_sheet_name)
data = pd.read_excel(path, sheet_name=begin_sheet_name)
# 1.日期
my_str = data.iloc[0, 0]
data_time = my_str[my_str.index('时') + 3: my_str.index('日') + 1]
data_time = pd.Series(data_time)
# 提取一个sheet页的数据
res = pd.DataFrame()
for i in [0, 4, 8]:
# 2.时间
time = data.iloc[1, 2 + i]
time = pd.Series(time)
time
# 3.外温
out_temp = data.iloc[2, 2 + i]
out_temp = pd.Series(out_temp)
# 4.外湿
out_wet = data.iloc[3, 2 + i]
out_wet = pd.Series(out_wet)
# 5.仓湿
w_wet = data.iloc[4, 2 + i]
w_wet = pd.Series(w_wet)
# 6. 仓1 , 2, 3, 4,5
w1 = pd.Series(data.iloc[5, 3 + i])
w2 = pd.Series(data.iloc[6, 3 + i])
w3