python 探空数据根据时间偏移量计算具体时间
这里有一组探空数据,每天08时和20时放气球,气球飞上去的时间就是用时间偏移量来计算的,而不是直接显示好的
根据“年”“月”“日”“时”“时间偏移量”列,时间偏移量单位为秒,计算具体的时间
可以使用 Python 中的 datetime
模块以及 timedelta
类来计算具体的时间。假设你有一个包含年、月、日、时和时间偏移量的数据结构(比如字典、列表或 pandas DataFrame),你可以根据这些信息计算出具体的时间。
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Time : 2025/1/20 20:22 @Author : Suyue @Email : 1493117872@qq.com @File : cloud_area.py @Project : untitled4 """ import pandas as pd from datetime import datetime, timedelta # 读取CSV文件到DataFrame df = pd.read_csv('D:/探空数据计算/tankong-2020-50527.csv') # 定义一个函数来计算具体时间 def calculate_final_time(row): year = int(row['Year_Data']) mon = int(row['Mon_Data']) day = int(row['Day_Data']) hour = int(row['Hour_Data']) time_dev = row['Time_Dev_WQ'] # 假设这是已经是整数或可以转换为整数/浮点数的秒数 # 注意:如果time_dev是浮点数且表示秒的小数部分,则直接传递给timedelta是可以的。 # 但如果它包含非秒的小数部分(比如毫秒、微秒等),则需要额外处理。 # 由于题目说明单位是秒,我们假设它是合适的。 base_time = datetime(year, mon, day, hour, 0, 0) offset_time = timedelta(seconds=time_dev) return base_time + offset_time # 应用函数并添加新列 df["具体时间"] = df.apply(calculate_final_time, axis=1) # # 打印结果 # print(df) # 将结果写入Excel文件 output_file_path = 'D:/探空数据计算/tankong-2020-50527_with_final_times.csv' df.to_csv(output_file_path, index=False) # index=False表示不写入行索引 # 打印成功消息 print(f"结果已成功写入Excel文件: {output_file_path}")
结果:
批量处理:
#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: Suyue @file: batch_process_raindrop_data.py @time: 2025/02/19 @desc: 批量时间转换 """ import pandas as pd from datetime import datetime, timedelta import os import glob # 设置CSV文件所在的目录 input_directory = '/lianxi2/' # 获取目录中所有CSV文件的路径 csv_files = glob.glob(os.path.join(input_directory, '*.csv')) # 定义一个函数来计算具体时间 def calculate_final_time(row): year = int(row['Year_Data']) mon = int(row['Mon_Data']) day = int(row['Day_Data']) hour = int(row['Hour_Data']) time_dev = row['Time_Dev_WQ'] # 假设这是已经是整数或可以转换为整数/浮点数的秒数 base_time = datetime(year, mon, day, hour, 0, 0) offset_time = timedelta(seconds=time_dev) return base_time + offset_time # 遍历每个CSV文件 for file_path in csv_files: # 读取CSV文件到DataFrame df = pd.read_csv(file_path) # 应用函数并添加新列 df["具体时间"] = df.apply(calculate_final_time, axis=1) # 将结果写回原文件(覆盖原文件) df.to_csv(file_path, index=False, encoding='gbk') # index=False表示不写入行索引 # 打印成功消息(可以在循环内部打印每个文件的成功消息,或者循环结束后打印总消息) for file_path in csv_files: print(f"结果已成功写入文件: {file_path}") # 或者,打印一个总结消息 # print(f"所有文件处理完成!")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)