数据处理
现有省站点.xlsx和output文件夹(中含有多个.xlsxl文件)已知站名和区站号分别在省站点.xlsx中的B列和A 列,
output的文件夹中各个Excel文件名后五为数字为区站号其A列B列C列D列如下
Year Mon Day PRE
1959 1 0 79.00
需将省站点.xlsx中的站名和区站号以及output文件夹中的每个Excel文件中的时间导入新的Excel文件 Starting year.xlsx,并在Starting year.xlsx中插入表头站名、区站号、开始时间
结果格式如下
站名 区站号 开始时间
光泽 58724 1959-1-0 数据处理 - 新手乐园
为了实现将省站点.xlsx中的站名和区站号以及output文件夹中的每个Excel文件中的时间导入新的Excel文件 Starting year.xlsx,并在Starting year.xlsx中插入表头站名、区站号、开始时间,可以按照以下步骤进行操作:
1. 打开省站点.xlsx文件和输出output文件夹。
2. 读取省站点.xlsx文件中的站名和区站号。你可以使用Python中的pandas库进行读取和处理。示例代码如下:
import pandas as pd
# 读取省站点.xlsx文件
df_station = pd.read_excel('省站点.xlsx')
# 提取站名和区站号
df_station = df_station[['B', 'A']]
df_station.columns = ['站名', '区站号']
3. 创建一个新的DataFrame来存储结果数据。在该DataFrame中,插入表头'站名'、'区站号'、'开始时间'。示例代码如下:
df_result = pd.DataFrame(columns=['站名', '区站号', '开始时间'])
4. 遍历output文件夹中的所有Excel文件,并读取它们的时间数据。示例代码如下:
import os
# 获取output文件夹中的所有Excel文件路径
folder_path = 'output/'
excel_files =
# 遍历每个Excel文件,读取时间数据并添加到结果DataFrame中
for file in excel_files:
file_path = os.path.join(folder_path, file)
df_excel = pd.read_excel(file_path)
# 提取时间数据
start_year = df_excel.loc
start_mon = df_excel.loc
start_day = df_excel.loc
# 将时间数据格式化为字符串,如'1959-1-0'
start_time = f'{start_year}-{start_mon}-{start_day}'
# 将站名、区站号和开始时间添加到结果DataFrame中
df_result = df_result.append({'站名': df_station.loc, '区站号': df_station.loc, '开始时间': start_time}, ignore_index=True)
5. 将结果DataFrame写入Starting year.xlsx文件中的一个工作表。示例代码如下:
# 写入结果DataFrame到Starting year.xlsx文件中的一个工作表
output_file_path = 'Starting year.xlsx'
with pd.ExcelWriter(output_file_path) as writer:
df_result.to_excel(writer, index=False, sheet_name='Result')
完成以上步骤后,Starting year.xlsx文件中的工作表'Result'将包含所需的数据,表头为'站名'、'区站号'和'开始时间'。
希望以上步骤对你有帮助!如果你还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
本帖最后由 陶远航 于 2023-7-20 17:48 编辑
你好!为了处理这个问题,你可以按照以下步骤进行操作:
1. 打开省站点.xlsx文件,并读取B列(站名)和A列(区站号)的数据。将其保存在两个列表中,分别是station_names和station_numbers。
2. 遍历output文件夹中的每个Excel文件。对于每个文件,提取文件名后五位数字作为区站号,并打开该文件。
3. 在Starting year.xlsx文件中创建一个新的工作表,命名为"结果",并插入表头"站名"、"区站号"和"开始时间"。
4. 遍历省站点的站名和区站号列表,并在"结果"工作表中的相应列中写入数据。
5. 对于每个output文件,从第二行开始逐行读取数据,提取年(Year)、月(Mon)和日(Day)的值,并将其与区站号对应的站名和区站号一起写入"结果"工作表的相应列中。
6. 保存并关闭Starting year.xlsx文件。
下面是一个伪代码示例,帮助你理解如何处理这个问题:
import os
import openpyxl
# 打开省站点.xlsx文件
province_file = openpyxl.load_workbook('省站点.xlsx')
sheet = province_file.active
# 读取站名和区站号数据
station_names = ]
station_numbers = ]
# 创建Starting year.xlsx文件
new_file = openpyxl.Workbook()
new_sheet = new_file.create_sheet(title='结果')
new_sheet.append(['站名', '区站号', '开始时间'])
# 遍历output文件夹中的Excel文件
output_folder = 'output'
files = os.listdir(output_folder)
for file_name in files:
# 提取区站号
area_number = file_name[-5:]
# 打开Excel文件
output_file = openpyxl.load_workbook(os.path.join(output_folder, file_name))
output_sheet = output_file.active
# 逐行读取数据并写入Starting year.xlsx文件
for row in output_sheet.iter_rows(min_row=2, values_only=True):
year, month, day, _ = row, row, row, row
# 获取对应的站名和区站号
station_name = station_names
# 将数据写入新的工作表
new_sheet.append()
# 保存并关闭Starting year.xlsx文件
new_file.save('Starting year.xlsx')
new_file.close()
province_file.close()
请注意,以上只是一个示例伪代码,具体需要根据你的实际情况进行调整。希望对你有所帮助!如果有任何问题,请随时向我提问。 首先,你需要安装pandas和openpyxlPython 库来处理 Excel 文件。如果你还没有这些库,你可以通过以下命令安装:
pip install pandas openpyxl
以下是一种可能的解决方案:
import pandas as pd
import os
from datetime import datetime
# 读取省站点数据
df_stations = pd.read_excel('省站点.xlsx')
# 初始化一个新的 DataFrame 用来保存结果
df_result = pd.DataFrame(columns=['站名', '区站号', '开始时间'])
# 遍历 output 文件夹下的所有文件
for file in os.listdir('output'):
if file.endswith('.xlsx'):
# 获取区站号
station_code = int(file[-9:-4])
# 如果该区站号存在于省站点中
if station_code in df_stations['区站号'].values:
# 读取文件内容
df_temp = pd.read_excel(os.path.join('output', file))
# 获取开始时间
starting_date = datetime(df_temp['Year'], df_temp['Mon'], df_temp['Day'])
# 获取站名
station_name = df_stations.loc == station_code, '站名'].values
# 将结果加入 df_result
df_result = df_result.append({'站名': station_name, '区站号': station_code, '开始时间': starting_date}, ignore_index=True)
# 将结果写入新的 Excel 文件
df_result.to_excel('Starting year.xlsx', index=False)
解释:
这段代码首先使用 pandas 的read_excel函数来读取省站点.xlsx文件,然后遍历output文件夹下的所有文件。对于每个以.xlsx结尾的文件,它会提取文件名的后5位数字作为区站号。如果该区站号存在于省站点数据中,那么就读取该文件的内容,获取第一行的Year , Mon , Day 列的值,并将它们合并为开始时间。然后,通过区站号从省站点数据中查找站名。最后,将站名,区站号,和开始时间作为一行数据添加到结果 DataFrame 中。
当所有文件都处理完后,使用to_excel函数将结果 DataFrame 写入新的Starting year.xlsx文件中。
需要注意的是,这段代码假设output文件夹和你的 python 脚本在同一目录下。如果不在,你需要修改os.listdir('output')和os.path.join('output', file)中的 'output' 为实际的文件夹路径。
页:
[1]