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"所有文件处理完成!")
复制代码

 

posted @   秋刀鱼CCC  Views(5)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示