鱼C论坛

 找回密码
 立即注册
查看: 1894|回复: 3

数据处理

[复制链接]
发表于 2023-7-20 17:38:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现有省站点.xlsxoutput文件夹(中含有多个.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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-20 17:38:32 | 显示全部楼层
数据处理 - 新手乐园

为了实现将省站点.xlsx中的站名和区站号以及output文件夹中的每个Excel文件中的时间导入新的Excel文件 Starting year.xlsx,并在Starting year.xlsx中插入表头站名、区站号、开始时间,可以按照以下步骤进行操作:

1. 打开省站点.xlsx文件和输出output文件夹。

2. 读取省站点.xlsx文件中的站名和区站号。你可以使用Python中的pandas库进行读取和处理。示例代码如下:
  1. import pandas as pd
  2. # 读取省站点.xlsx文件
  3. df_station = pd.read_excel('省站点.xlsx')
  4. # 提取站名和区站号
  5. df_station = df_station[['B', 'A']]
  6. df_station.columns = ['站名', '区站号']
复制代码

3. 创建一个新的DataFrame来存储结果数据。在该DataFrame中,插入表头'站名'、'区站号'、'开始时间'。示例代码如下:
  1. df_result = pd.DataFrame(columns=['站名', '区站号', '开始时间'])
复制代码

4. 遍历output文件夹中的所有Excel文件,并读取它们的时间数据。示例代码如下:
  1. import os
  2. # 获取output文件夹中的所有Excel文件路径
  3. folder_path = 'output/'
  4. excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
  5. # 遍历每个Excel文件,读取时间数据并添加到结果DataFrame中
  6. for file in excel_files:
  7.     file_path = os.path.join(folder_path, file)
  8.     df_excel = pd.read_excel(file_path)
  9.     # 提取时间数据
  10.     start_year = df_excel.loc[0, 'Year']
  11.     start_mon = df_excel.loc[0, 'Mon']
  12.     start_day = df_excel.loc[0, 'Day']
  13.     # 将时间数据格式化为字符串,如'1959-1-0'
  14.     start_time = f'{start_year}-{start_mon}-{start_day}'
  15.     # 将站名、区站号和开始时间添加到结果DataFrame中
  16.     df_result = df_result.append({'站名': df_station.loc[0, '站名'], '区站号': df_station.loc[0, '区站号'], '开始时间': start_time}, ignore_index=True)
复制代码

5. 将结果DataFrame写入Starting year.xlsx文件中的一个工作表。示例代码如下:
  1. # 写入结果DataFrame到Starting year.xlsx文件中的一个工作表
  2. output_file_path = 'Starting year.xlsx'
  3. with pd.ExcelWriter(output_file_path) as writer:
  4.     df_result.to_excel(writer, index=False, sheet_name='Result')
复制代码

完成以上步骤后,Starting year.xlsx文件中的工作表'Result'将包含所需的数据,表头为'站名'、'区站号'和'开始时间'。

希望以上步骤对你有帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-20 17:38:33 | 显示全部楼层
本帖最后由 陶远航 于 2023-7-20 17:48 编辑

你好!为了处理这个问题,你可以按照以下步骤进行操作:

1. 打开省站点.xlsx文件,并读取B列(站名)和A列(区站号)的数据。将其保存在两个列表中,分别是station_namesstation_numbers

2. 遍历output文件夹中的每个Excel文件。对于每个文件,提取文件名后五位数字作为区站号,并打开该文件。

3. 在Starting year.xlsx文件中创建一个新的工作表,命名为"结果",并插入表头"站名"、"区站号"和"开始时间"。

4. 遍历省站点的站名和区站号列表,并在"结果"工作表中的相应列中写入数据。

5. 对于每个output文件,从第二行开始逐行读取数据,提取年(Year)、月(Mon)和日(Day)的值,并将其与区站号对应的站名和区站号一起写入"结果"工作表的相应列中。

6. 保存并关闭Starting year.xlsx文件。

下面是一个伪代码示例,帮助你理解如何处理这个问题:

  1. import os
  2. import openpyxl

  3. # 打开省站点.xlsx文件
  4. province_file = openpyxl.load_workbook('省站点.xlsx')
  5. sheet = province_file.active

  6. # 读取站名和区站号数据
  7. station_names = [cell.value for cell in sheet['B']]
  8. station_numbers = [cell.value for cell in sheet['A']]

  9. # 创建Starting year.xlsx文件
  10. new_file = openpyxl.Workbook()
  11. new_sheet = new_file.create_sheet(title='结果')
  12. new_sheet.append(['站名', '区站号', '开始时间'])

  13. # 遍历output文件夹中的Excel文件
  14. output_folder = 'output'
  15. files = os.listdir(output_folder)

  16. for file_name in files:
  17.     # 提取区站号
  18.     area_number = file_name[-5:]
  19.    
  20.     # 打开Excel文件
  21.     output_file = openpyxl.load_workbook(os.path.join(output_folder, file_name))
  22.     output_sheet = output_file.active
  23.    
  24.     # 逐行读取数据并写入Starting year.xlsx文件
  25.     for row in output_sheet.iter_rows(min_row=2, values_only=True):
  26.         year, month, day, _ = row[0], row[1], row[2], row[3]
  27.         
  28.         # 获取对应的站名和区站号
  29.         station_name = station_names[station_numbers.index(area_number)]
  30.         
  31.         # 将数据写入新的工作表
  32.         new_sheet.append([station_name, area_number, f"{year}-{month}-{day}"])

  33. # 保存并关闭Starting year.xlsx文件
  34. new_file.save('Starting year.xlsx')
  35. new_file.close()
  36. province_file.close()
复制代码


请注意,以上只是一个示例伪代码,具体需要根据你的实际情况进行调整。希望对你有所帮助!如果有任何问题,请随时向我提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-20 17:38:45 | 显示全部楼层
首先,你需要安装  pandas  和  openpyxl  Python 库来处理 Excel 文件。如果你还没有这些库,你可以通过以下命令安装:
  1. pip install pandas openpyxl
复制代码

以下是一种可能的解决方案:
  1. import pandas as pd
  2. import os
  3. from datetime import datetime
  4. # 读取省站点数据
  5. df_stations = pd.read_excel('省站点.xlsx')
  6. # 初始化一个新的 DataFrame 用来保存结果
  7. df_result = pd.DataFrame(columns=['站名', '区站号', '开始时间'])
  8. # 遍历 output 文件夹下的所有文件
  9. for file in os.listdir('output'):
  10.     if file.endswith('.xlsx'):
  11.         # 获取区站号
  12.         station_code = int(file[-9:-4])
  13.         # 如果该区站号存在于省站点中
  14.         if station_code in df_stations['区站号'].values:
  15.             # 读取文件内容
  16.             df_temp = pd.read_excel(os.path.join('output', file))
  17.             # 获取开始时间
  18.             starting_date = datetime(df_temp['Year'][0], df_temp['Mon'][0], df_temp['Day'][0])
  19.             # 获取站名
  20.             station_name = df_stations.loc[df_stations['区站号'] == station_code, '站名'].values[0]
  21.             # 将结果加入 df_result
  22.             df_result = df_result.append({'站名': station_name, '区站号': station_code, '开始时间': starting_date}, ignore_index=True)
  23. # 将结果写入新的 Excel 文件
  24. 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' 为实际的文件夹路径。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 06:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表