日期表达的转换——python: DOY(day of year) AND (DATE:year-month-day)
将csv中的年月日转换为DOY,其中年月日在CSV中的具体情况如下表所示:
代码如下:
# Ren Yan import math import pandas as pd from pandas import Series file = pd.read_csv('读入csv') year_file = file['Year'] # 每一列的名字 month_file = file['Month'] day_file = file['Day'] def date2doy(year, month, day): month_leapyear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 闰年 month_notleap = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] doy = 0 if month == 1: pass elif year % 4 == 0 and (year % 100 != 0 or year % 400 == 0): for i in range(month - 1): doy += month_leapyear[i] else: for i in range(month - 1): doy += month_notleap[i] doy += day return doy DOY = [] length = len(year_file) - 2 # 循环次数 for j in range(0, length): year_j = math.ceil(year_file[j]) # 将浮点型变为整型 month_j = math.ceil(month_file[j]) day_j = math.ceil(day_file[j]) DOY_j = date2doy(year_j, month_j, day_j) year_doy = str(year_j) + str(DOY_j) # 使得输出形式为yeardoy,如:2016255 DOY.append(year_doy) DOY = Series(DOY) # 将list变为series,因为只有series才可以作为参数添加到表格中 file['DOY'] = DOY # 在原始的表格中添加新的一列,列名为DOY,数值为先前计算的DOY file.to_csv(r'F:/paper_graduate/ship-based data/2016doy1.csv', mode='a', index=False) # 输出到新的csv中
如果是将DOY变为year-month-day的形式:
其他的类似,定义新的函数:
def doy2date(year, doy): month_leapyear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 闰年 month_notleap = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0): for i in range(0, 12): if doy > month_leapyear[i]: doy -= month_leapyear[i] # 用来判断月份 continue if doy <= month_leapyear[i]: month = i + 1 day = doy # 某月的第多少天 break else: for i in range(0, 12): if doy > month_notleap[i]: doy -= month_notleap[i] continue if doy <= month_notleap[i]: month = i + 1 day = doy break return month, day
转换代码参考: https://blog.csdn.net/weixin_30748995/article/details/101570875
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)