一、儒略日计算
儒略日(Julian Day
)是在儒略周期内以连续的日数计算时间的计时法,主要用于天文学领域,SMOKE、CMAQ、CAMx等模型中也有使用。Linux中主要使用IOAPI库中的juldate
和jul2greg
来进行常规日期和儒略日的相互转化。Python中儒略日与一般格式日期的转化可参考以下方法。
from datetime import datetime
# 1.日期转儒略日
def date2jd(date):
fmt = '%Y-%m-%d' # fmt具体根据date的格式
dt = datetime.strptime(date, fmt)
yyyy = str(dt.timetuple().tm_year).zfill(4)
jjj = str(dt.timetuple().tm_yday).zfill(3)
return yyyy + jjj
# 2.儒略日转日期,jd需为str格式
def jd2date(jd):
fmt = '%Y-%m-%d' # fmt具体根据date想要转成的格式而定
dt = datetime.strptime(jd, '%Y%j').date()
return dt.strftime(fmt)
# 3.测试
date_test = '2023-02-01'
jd_test = '2023032'
print(f">>> {date_test}的儒略日为{date2jd(date_test)} <<<")
print(f">>> {jd_test}的常规日期为{jd2date(jd_test)} <<<")
# 4.输出为:
>>> 2023-02-01的儒略日为2023032 <<<
>>> 2023032的常规日期为2023-02-01 <<<
二、Pandas写Excel文件多Sheet处理
Pandas中使用常规的to_excel
方法将DataFrame写入Excel文件时,即使多次写入并指明sheet_name
参数为不同值,在Excel文件中也会只有会后一次写入的Sheet。要实现多个Sheet写入,可使用pd.ExcelWriter
方法:
# excel_file_name 为要输出的Excel全路径文件名
# header和index参数与多sheet无关,可根据实际需要进行修改即可
# header=None简单理解为不将df的列名(表头)写入文件
# index=False简单理解为不将df的index写入文件
with pd.ExcelWriter(excel_file_name) as writer:
df_A.to_excel(writer, sheet_name='A', header=None, index=False)
df_B.to_excel(writer, sheet_name='B', header=None, index=False)
以上方法还有个好处是,打开的writer会自动close,无需额外处理。
三、datetime64[ns]时间格式处理
在处理时序数据时候,会经常使用pd.to_datetime
将表示时间的列(值为str类型)转为Python中能用时间方法处理的列。pd.to_datetime处理得到的时间列数据类型为datetime64[ns]
。
要对该列使用.day
、.hour
等方法获取相应的日、小时等属性值,可使用该列的dt属性方法即可获取整列的需求值(day、hour等)
【述毕】
笔者独自运营了微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。(微信搜索“微思研”)