王book 发表于 2023-7-20 17:38:03

数据处理

现有省站点.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

Mike_python小 发表于 2023-7-20 17:38:32

数据处理 - 新手乐园

为了实现将省站点.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:38:33

本帖最后由 陶远航 于 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()


请注意,以上只是一个示例伪代码,具体需要根据你的实际情况进行调整。希望对你有所帮助!如果有任何问题,请随时向我提问。

isdkz 发表于 2023-7-20 17:38:45

首先,你需要安装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]
查看完整版本: 数据处理