python时间戳格式定义_python时间戳(1)

(3) 根据习惯日期定位方式定位

首先看看有哪些定位?之前运用的都可以,加上数字即可

| - SemiMonthEnd | - MonthEnd | - WeekOfMonth | - QuarterEnd | - BQuarterEnd | - YearEnd | - BYearEnd |

| - SemiMonthBegin| - MonthBegin| - LastWeekOfMonth| - QuarterBegin| - BQuarterBegin | - YearBegin| - BYearBegin |

| - Hour | - Minute | - Second | -

now+MonthEnd(2) #往后挪两个月,这弥补了之前无法定位到当前月的下个月问题 Timestamp('2020-01-31 16:34:35.850953')

注意:错误示范

offset=MonthEnd(2)

offset.rollforward(now) #结果仍然为 Timestamp('2019-12-31 16:34:35.850953'),想要达到2020年1月只能用加的方式

注意:通常情况下我们一般不单独做时间序列单列,都会跟一些数据,也就是series和dataframe,可以使用shift进行日期变更

四、在两个时间点内按要求添加数据

这个功能就相当于range(a,b),所以公式也很像date_range(start='开头日期’,end='结尾日期‘,periods=递增几次,freq='频率')

1. date_range(‘开头日期‘,n)

从开头日期开始一天一天的列出n天

2. date_range(‘开头日期‘,递增几次,频率)

频率有以下几种表示方式:

a. 天以内

| - 2(按2天递增) |-‘3B’(按3天工作日递增)| - ‘4h’(按四个小时递增) | - '50min'(按五十分钟递增)

| - '6S'(按六秒递增)| - ‘7ms’(按七毫秒递增)|-‘8U’(按八微秒递增)| - ‘2D4h50min6S7ms8U’ (可以连着写)

pd.date_range('2019-12-16',periods=5,freq='2D4h50min6S7ms8U')

DatetimeIndex(['2019-12-16 00:00:00', '2019-12-18 04:50:06.007008',

'2019-12-20 09:40:12.014016', '2019-12-22 14:30:18.021024',

'2019-12-24 19:20:24.028032'],

dtype='datetime64[ns]', freq='190206007008U')

b. 周以内

| - ‘W-TUE’(从开头日期的当天开始,往后第一个星期二开始,按7天递增)

pd.date_range('2019-12-16',periods=5,freq='W-TUE')

DatetimeIndex(['2019-12-17', '2019-12-24', '2019-12-31', '2020-01-07',

'2020-01-14'],

dtype='datetime64[ns]', freq='W-TUE')

c. 月以内

|-'WOM-3FRI'(从开头日期开始月的第3个星期五,按月递增)

pd.date_range('2019-12-21',periods=5,freq='WOM-3FRI') #注意:如果给出的日期超过本月第三个星期五将跳过本月

DatetimeIndex(['2020-01-17', '2020-02-21', '2020-03-20',

'2020-04-17'],dtype='datetime64[ns]', freq='WOM-3FRI')

| -‘6M’(从开头日期的当月月底开始,按六个月递增)| - ‘6BM’(从开头日期的当月最后一个工作日开始,按六个月递增)

pd.date_range('2019-12-21',periods=5,freq='6M') # 注意:与MS的区别

DatetimeIndex(['2019-12-31', '2020-06-30', '2020-12-31', '2021-06-30',

'2021-12-31'],

dtype='datetime64[ns]', freq='6M')

pd.date_range('2018-12-21',periods=5,freq='6BM')

DatetimeIndex(['2018-12-31', '2019-06-28', '2019-12-31', '2020-06-30',

'2020-12-31'],

dtype='datetime64[ns]', freq='6BM')

| -‘7MS ’(从开头日期的当月月初开始,按七个月递增)| -‘7BMS’(从开头日期的当月第一个工作日开始,按七个月递增)

pd.date_range('2018-12-21',periods=5,freq='7MS') # 注意:如果给定的日期不是月头开始,那么结果会从下个月月初开始,按七个月递增

DatetimeIndex(['2019-01-01', '2019-08-01', '2020-03-01', '2020-10-01',

'2021-05-01'],

dtype='datetime64[ns]', freq='7MS')

pd.date_range('2018-12-21',periods=5,freq='7BMS')

DatetimeIndex(['2019-01-01', '2019-08-01', '2020-03-02', '2020-10-01',

'2021-05-03'],

dtype='datetime64[ns]', freq='7BMS')

d. 季度以内

| - ‘Q-FEB’(从二月月底开始,按三个月递增)|-‘QS-FEB’(从二月月头开始,按三个月递增)

| - 'BQ-FEB'(从二月最后一个工作日开始,按三个月递增)|- 'BQS-FEB'(从二月第一个工作日开始,按三个月递增)

pd.date_range('2018-12-01',periods=5,freq='BQ-FEB')

# Q和QS没什么注意点,但BQ和BQS需要注意,如果给定的日期已经过了当年二月,则系统会从下月的二月开始显示

DatetimeIndex(['2019-02-28', '2019-05-31', '2019-08-30', '2019-11-29',

'2020-02-28'],

dtype='datetime64[ns]', freq='BQ-FEB')

e. 年以内

| - 'A-FEB'(从开头年份的二月底开始,按年递增)| - ‘BA-FEB’(从开头年份的二月最后一个工作日开始,按年递增)

| - ‘AS-FEB’(从开头年份的二月初开始,按年递增)| - ‘BAS-FEB’(从开头年的二月第一个工作日开始,按年递增)

pd.date_range('2018-12-01',periods=5,freq='AS-FEB') #同上

DatetimeIndex(['2019-02-01', '2020-02-01', '2021-02-01', '2022-02-01',

'2023-02-01'],

dtype='datetime64[ns]', freq='AS-FEB')

-----------------

前文中我们看到有些日期已经超过导致递延问题,那么我们如何解决这类问题?

我们可以提取年、月来避免

比如前文中pd.date_range('2018-12-01',periods=5,freq='BQ-FEB')中的问题从年初开始

importpandas as pd

startDate="2018-12-01"startDateYear=str(pd.to_datetime(startDate).year)pd.date_range(startDateYear,periods=5,freq='AS-FEB')

DatetimeIndex(['2018-02-01', '2019-02-01', '2020-02-01', '2021-02-01',

'2022-02-01'],

dtype='datetime64[ns]', freq='AS-FEB')

比如前文中pd.date_range('2019-12-21',periods=5,freq='WOM-3FRI')中的问题从月初开始

importpandas as pd

startDate="2019-12-01"startDateYear=str(pd.to_datetime(startDate).year)

startDateMonth=str(pd.to_datetime(startDate).month)year_month=startDateYear+'-'+startDateMonth

pd.date_range(year_month,periods=5,freq='WOM-3FRI')

DatetimeIndex(['2019-12-20', '2020-01-17', '2020-02-21', '2020-03-20',

'2020-04-17'],

dtype='datetime64[ns]', freq='WOM-3FRI')

3. date_range(‘开头日期‘,‘结束日期’,频率)

4. date_range('开头日期‘,‘结束日期’,递增几次)

按天数等分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值