Python基础知识之时间戳的用法

写在前面        

        时间戳是处理数据经常要遇到的问题,比如nc数据中的time维度 或者pandas等结构中的时序数据,详细介绍过段时间更新一下,先上的常用方便的小代码。

        主要是利用 datetime, timedelta / np.datetime64/ pandas.date_range

代码

1. 生成一段时间,并挑选出你想要的时间(比如我只想要夏季的数据)

        注意:pd.date_range(start=None, end=None, periods=None, freq=‘D’, tz=None, normalize=False, name=None, closed=None, **kwargs)  

start:开始时间  end:结束时间  periods:偏移量  freq:频率,默认天,pd.date_range()默认频率为日历日,pd.bdate_range()默认频率为工作日  tz:时区 name:索引对象名称

import pandas as pd
start_date = '1960-06-01'
end_date = '2021-08-31'
date_range = pd.date_range(start=start_date, end=end_date)
# 过滤出夏季日期(6月1日到8月31日之间的日期) 5704
summer_dates = date_range[(date_range.month >= 6) & (date_range.month <= 8)]

2. 给定日期T,计算前一天的日期T-1 (以'1960-06-02'为例)

from datetime import datetime, timedelta
date_obj = datetime.strptime('1960-06-02', '%Y-%m-%d')
previous_day = date_obj - timedelta(days=1)
# # 将前一天的日期格式化为字符串
previous_day_str = previous_day.strftime('%Y-%m-%d')

3. 有的时候时间戳是以np.array格式,Time: array(['1960-06-01T12:00:00.000000000', '1960-06-02T12:00:00.000000000', '1960-06-03T12:00:00.000000000', '1960-06-04T12:00:00.000000000', '1960-06-05T12:00:00.000000000', '1960-06-06T12:00:00.000000000', '1960-06-07T12:00:00.000000000', '1960-06-08T12:00:00.000000000', '1960-06-09T12:00:00.000000000', '1960-06-10T12:00:00.000000000'], dtype='datetime64[ns]'),找出其中找出'1960-6-1T12:00:00.000000000'的索引

import numpy as np

# 日期数组
Time = np.array(['1960-06-01T12:00:00.000000000', '1960-06-02T12:00:00.000000000',
                 '1960-06-03T12:00:00.000000000', '1960-06-04T12:00:00.000000000',
                 '1960-06-05T12:00:00.000000000', '1960-06-06T12:00:00.000000000',
                 '1960-06-07T12:00:00.000000000', '1960-06-08T12:00:00.000000000',
                 '1960-06-09T12:00:00.000000000', '1960-06-10T12:00:00.000000000'],
                dtype='datetime64[ns]')

# 目标日期
target_date = np.datetime64('1960-06-01T12:00:00.000000000')

# 查找索引
index = np.where(Time == target_date)[0]

if index:
    print(f"目标日期的索引是:{index[0]}")
else:
    print("未找到目标日期的索引")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值