鱼C论坛

 找回密码
 立即注册
查看: 1451|回复: 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
想知道小甲鱼最近在做啥?请访问 -> 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库进行读取和处理。示例代码如下:
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 = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]# 遍历每个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[0, 'Year']    start_mon = df_excel.loc[0, 'Mon']    start_day = df_excel.loc[0, 'Day']    # 将时间数据格式化为字符串,如'1959-1-0'    start_time = f'{start_year}-{start_mon}-{start_day}'    # 将站名、区站号和开始时间添加到结果DataFrame中    df_result = df_result.append({'站名': df_station.loc[0, '站名'], '区站号': df_station.loc[0, '区站号'], '开始时间': 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'将包含所需的数据,表头为'站名'、'区站号'和'开始时间'。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> 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文件。

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

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

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

# 创建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[0], row[1], row[2], row[3]
        
        # 获取对应的站名和区站号
        station_name = station_names[station_numbers.index(area_number)]
        
        # 将数据写入新的工作表
        new_sheet.append([station_name, area_number, f"{year}-{month}-{day}"])

# 保存并关闭Starting year.xlsx文件
new_file.save('Starting year.xlsx')
new_file.close()
province_file.close()

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

使用道具 举报

发表于 2023-7-20 17:38:45 | 显示全部楼层
首先,你需要安装  pandas  和  openpyxl  Python 库来处理 Excel 文件。如果你还没有这些库,你可以通过以下命令安装:
pip install pandas openpyxl
以下是一种可能的解决方案:
import pandas as pdimport osfrom 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'][0], df_temp['Mon'][0], df_temp['Day'][0])            # 获取站名            station_name = df_stations.loc[df_stations['区站号'] == station_code, '站名'].values[0]            # 将结果加入 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' 为实际的文件夹路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 15:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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