# 创建一个ExcelWriter对象,用于将结果写入到Excel表格中 writer = pd.ExcelWriter('求和.xlsx', engine='xlsxwriter') # 读取多个表格并执行相同的操作 for file in ['城二.xlsx', '涪陵.xlsx','长寿.xlsx']: # 读取Excel文件 df = pd.read_excel(file) # 将时间列转换为时间类型(只包含小时、分钟和秒) df['时间'] = pd.to_datetime(df['时间'], format='%H:%M:%S') # 创建空的DataFrame,用于存储每个小时的求和结果 sum_data = pd.DataFrame() # 迭代每个小时 for hour in range(24): # 选择特定小时的数据行 data_hour = df.loc[df['时间'].dt.hour == hour] # 对多个列进行求和,并输出为一行数据 sum_hour = data_hour[ ['下行平均可用PRB个数', '下行平均使用的PRB个数', '下行调度平均流数', '上行平均可用PRB个数', '上行平均使用的PRB个数', '上行调度平均流数', '平均使用的PDCCH CCE个数', '平均可用的PDCCH CCE个数', '下行PRB*空分流', '上行PRB*空分流']].sum().to_frame().T.reset_index(drop=True) # 将每个小时的求和结果追加到总的结果DataFrame中 sum_data = pd.concat([sum_data, sum_hour], ignore_index=True) # 将结果写入到ExcelWriter对象中的不同工作表中 sum_data.to_excel(writer, sheet_name=file, index=False) # 保存ExcelWriter对象中的结果到Excel表格中 writer.save()
时间: 2024-04-18 12:30:27 浏览: 171
这段代码是用来读取多个Excel表格,并对每个表格的特定列进行求和操作,然后将结果写入到一个新的Excel表格中。具体的步骤如下:
1. 创建一个ExcelWriter对象,用于将结果写入到Excel表格中。
2. 使用循环遍历每个表格文件,依次读取Excel文件。
3. 将时间列转换为时间类型,只保留小时、分钟和秒。
4. 创建一个空的DataFrame,用于存储每个小时的求和结果。
5. 对于每个小时,选择特定小时的数据行。
6. 对多个列进行求和,并输出为一行数据。
7. 将每个小时的求和结果追加到总的结果DataFrame中。
8. 将结果写入到ExcelWriter对象中的不同工作表中,每个工作表对应一个原始表格文件。
9. 保存ExcelWriter对象中的结果到Excel表格中。
这样就完成了对多个Excel表格的读取、求和和写入操作。
相关问题
# 创建一个空的DataFrame,用于存储所有小时的求和结果 sum_data = pd.DataFrame() # 读取多个表格并执行相同的操作 for file in ['城二.xlsx', '涪陵.xlsx', '长寿.xlsx']: # 读取Excel文件 df = pd.read_excel(file) # 将时间列转换为datetime类型 df['时间'] = pd.to_datetime(df['时间'], format='%H:%M:%S') # 迭代每个小时 for hour in range(24): # 选择特定小时的数据行 data_hour = df.loc[df['时间'].dt.hour == hour] # 对多个列进行求和,并输出为一行数据 sum_hour = data_hour[['下行平均可用PRB个数', '下行平均使用的PRB个数', '下行调度平均流数', '上行平均可用PRB个数', '上行平均使用的PRB个数', '上行调度平均流数', '平均使用的PDCCH CCE个数', '平均可用的PDCCH CCE个数', '下行PRB*空分流', '上行PRB*空分流']].sum().to_frame().T.reset_index(drop=True) # 将每个小时的求和结果追加到总的结果DataFrame中 sum_data = pd.concat([sum_data, sum_hour], ignore_index=True) # 将结果保存到Excel表格 sum_data.to_excel('结果.xlsx', index=False)我希望每个不同的excel文件的结果能够在同一个表格中,但是含有各自的表头,能够分开
如果您希望每个不同的Excel文件的结果能够在同一个表格中,但含有各自的表头并能够分开,可以按照以下方式修改代码:
```python
import pandas as pd
# 创建一个空的DataFrame,用于存储所有文件的结果
all_data = pd.DataFrame()
# 读取多个表格并执行相同的操作
for file in ['城二.xlsx', '涪陵.xlsx', '长寿.xlsx']:
# 读取Excel文件
df = pd.read_excel(file)
# 将时间列转换为datetime类型
df['时间'] = pd.to_datetime(df['时间'], format='%H:%M:%S')
# 迭代每个小时
for hour in range(24):
# 选择特定小时的数据行
data_hour = df.loc[df['时间'].dt.hour == hour]
# 对多个列进行求和,并输出为一行数据
sum_hour = data_hour[['下行平均可用PRB个数', '下行平均使用的PRB个数', '下行调度平均流数', '上行平均可用PRB个数', '上行平均使用的PRB个数', '上行调度平均流数', '平均使用的PDCCH CCE个数',
'平均可用的PDCCH CCE个数', '下行PRB*空分流', '上行PRB*空分流']].sum().to_frame().T.reset_index(drop=True)
# 添加文件名作为新的列
sum_hour['文件名'] = file
# 将每个小时的求和结果追加到总的结果DataFrame中
all_data = pd.concat([all_data, sum_hour], ignore_index=True)
# 创建一个ExcelWriter对象,用于将结果写入到Excel表格中
writer = pd.ExcelWriter('结果.xlsx', engine='xlsxwriter')
# 将总的结果DataFrame写入到ExcelWriter对象中的总结果工作表中
all_data.to_excel(writer, sheet_name='总结果', index=False)
# 按文件名分组,将每个文件的结果写入到ExcelWriter对象中的不同工作表中
for file, data in all_data.groupby('文件名'):
data.to_excel(writer, sheet_name=file, index=False)
# 保存ExcelWriter对象中的结果到Excel表格中
writer.save()
```
这段代码将在同一个Excel文件中,包含名为'总结果'的总结果工作表,并在其他工作表中分别包含每个文件的结果,工作表名与文件名对应。每个工作表都会有各自的表头,并且所有结果也会被保存在一个总的结果DataFrame中。
请尝试使用修改后的代码,并将Excel文件命名为'结果.xlsx',查看是否符合您的需求。
我希望每个不同的excel文件的结果能够在同一个表格中,但是含有各自的表头,能够分开
如果您希望将每个不同的Excel文件的结果写入同一个表格中,但保留各自的表头,您可以进行以下修改:
```python
# 创建一个ExcelWriter对象,用于将结果写入到Excel表格中
writer = pd.ExcelWriter('求和.xlsx', engine='xlsxwriter')
# 创建一个空的DataFrame,用于存储所有小时的求和结果
sum_data = pd.DataFrame()
# 读取多个表格并执行相同的操作
for file in ['城二.xlsx', '涪陵.xlsx', '长寿.xlsx']:
# 读取Excel文件
df = pd.read_excel(file)
# 将时间列转换为时间类型(只包含小时、分钟和秒)
df['时间'] = pd.to_datetime(df['时间'], format='%H:%M:%S')
# 创建空的DataFrame,用于存储每个小时的求和结果
sum_hourly = pd.DataFrame()
# 迭代每个小时
for hour in range(24):
# 选择特定小时的数据行
data_hour = df.loc[df['时间'].dt.hour == hour]
# 对多个列进行求和,并输出为一行数据
sum_hour = data_hour[
['下行平均可用PRB个数', '下行平均使用的PRB个数', '下行调度平均流数', '上行平均可用PRB个数', '上行平均使用的PRB个数', '上行调度平均流数', '平均使用的PDCCH CCE个数',
'平均可用的PDCCH CCE个数', '下行PRB*空分流', '上行PRB*空分流']].sum().to_frame().T.reset_index(drop=True)
# 将每个小时的求和结果追加到小时级别的结果DataFrame中
sum_hourly = pd.concat([sum_hourly, sum_hour])
# 将小时级别的结果DataFrame写入到ExcelWriter对象中的不同工作表中
sum_hourly.to_excel(writer, sheet_name=file, index=False, startrow=len(sum_data)+1)
# 将每个文件的结果追加到总的结果DataFrame中
sum_data = pd.concat([sum_data, sum_hourly], ignore_index=True)
# 将总的结果DataFrame写入到ExcelWriter对象中的总结果工作表中
sum_data.to_excel(writer, sheet_name='总结果', index=False)
# 保存ExcelWriter对象中的结果到Excel表格中
writer.save()
```
这段代码将在同一个Excel表格中的不同工作表中写入每个文件的结果,并保留各自的表头。同时,它还将所有文件的结果存储在一个总结果工作表中。请注意,每个工作表的起始行通过`startrow`参数设置为前一个文件的结果行数加1,以便在同一工作表中进行追加写入。
希望这次修改符合您的需求。如果还有其他问题,请随时提问。
阅读全文