07.pandas中的日期处理

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from numpy import nan as NA
import time
from datetime import datetime
from datetime import timedelta
# 创建一个对象
time1 = datetime(2020,8,17)
time1
datetime.datetime(2020, 8, 17, 0, 0)
# 获取当前是时间
now = datetime.now()
now
datetime.datetime(2020, 8, 17, 15, 42, 27, 280357)
# 时间戳
time.time()
1597650184.4910653
# 将当前时间格式化显示
now.strftime('%Y-%m-%d %H:%M:%S %A %j')
'2020-08-17 15:42:27 Monday 230'
# 只要年月日
now.date()
datetime.date(2020, 8, 17)
# 只要时分秒
now.time()
datetime.time(15, 42, 27, 280357)
time2 = datetime(2020,6,9)
time2
datetime.datetime(2020, 6, 9, 0, 0)
# 时间是减法的 ,得到 timedelta 对象
​
datetime.datetime(2020, 8, 17, 15, 42, 27, 280357)
time1-time2
datetime.timedelta(days=69)
# 有时候是个特殊 的时间str
time_str = '北京时间:2020-08-08  09:10:20'
# 原封不动的复制与修改,  想要什么就换成 特殊占位符 。str  product time
datetime.strptime(time_str,'北京时间:%Y-%m-%d  %H:%M:%S')
datetime.datetime(2020, 8, 8, 9, 10, 20)

timelist = Series(
    [f'北京时间:2020-6-{9+i} 09:01:02' for i in range(5)]+\
    [f'时间:2020-7-{1+i} 09:01:02' for i in range(5)]+\
    [f'本地时间:2020-7-{6+i} 09:01:02' for i in range(5)]
)
timelist
0      北京时间:2020-6-9 09:01:02
1     北京时间:2020-6-10 09:01:02
2     北京时间:2020-6-11 09:01:02
3     北京时间:2020-6-12 09:01:02
4     北京时间:2020-6-13 09:01:02
5        时间:2020-7-1 09:01:02
6        时间:2020-7-2 09:01:02
7        时间:2020-7-3 09:01:02
8        时间:2020-7-4 09:01:02
9        时间:2020-7-5 09:01:02
10     本地时间:2020-7-6 09:01:02
11     本地时间:2020-7-7 09:01:02
12     本地时间:2020-7-8 09:01:02
13     本地时间:2020-7-9 09:01:02
14    本地时间:2020-7-10 09:01:02
dtype: object
timelist.apply(lambda x:x[x.find(':')+1:])
0      2020-6-9 09:01:02
1     2020-6-10 09:01:02
2     2020-6-11 09:01:02
3     2020-6-12 09:01:02
4     2020-6-13 09:01:02
5      2020-7-1 09:01:02
6      2020-7-2 09:01:02
7      2020-7-3 09:01:02
8      2020-7-4 09:01:02
9      2020-7-5 09:01:02
10     2020-7-6 09:01:02
11     2020-7-7 09:01:02
12     2020-7-8 09:01:02
13     2020-7-9 09:01:02
14    2020-7-10 09:01:02
dtype: object
timelist.apply(lambda x:datetime.strptime(x[x.find(':')+1:],'%Y-%m-%d %H:%M:%S'))
0    2020-06-09 09:01:02
1    2020-06-10 09:01:02
2    2020-06-11 09:01:02
3    2020-06-12 09:01:02
4    2020-06-13 09:01:02
5    2020-07-01 09:01:02
6    2020-07-02 09:01:02
7    2020-07-03 09:01:02
8    2020-07-04 09:01:02
9    2020-07-05 09:01:02
10   2020-07-06 09:01:02
11   2020-07-07 09:01:02
12   2020-07-08 09:01:02
13   2020-07-09 09:01:02
14   2020-07-10 09:01:02
dtype: datetime64[ns]
# 本地时间:2020-7-6 09:01:02
def getTime(x):


#     time_str = x[x.find(':')+1:]
    time_str = x.split(':',1)[1]
    return datetime.strptime(time_str,'%Y-%m-%d %H:%M:%S')
timelist.apply(getTime)
0    2020-06-09 09:01:02
1    2020-06-10 09:01:02
2    2020-06-11 09:01:02
3    2020-06-12 09:01:02
4    2020-06-13 09:01:02
5    2020-07-01 09:01:02
6    2020-07-02 09:01:02
7    2020-07-03 09:01:02
8    2020-07-04 09:01:02
9    2020-07-05 09:01:02
10   2020-07-06 09:01:02
11   2020-07-07 09:01:02
12   2020-07-08 09:01:02
13   2020-07-09 09:01:02
14   2020-07-10 09:01:02
dtype: datetime64[ns]

dateutil.parser.parse

from dateutil.parser import parse
parse('2020-8-17 16:30')
datetime.datetime(2020, 8, 17, 16, 30)
parse('2020-8-17 4:32 pm')
datetime.datetime(2020, 8, 17, 16, 32)
parse('Aug 17,2020 4:30:20 pm')
datetime.datetime(2020, 8, 17, 16, 30, 20)
parse('2020 Aug 17 4:30:20 pm')
datetime.datetime(2020, 8, 17, 16, 30, 20)
parse('2020 8 17')
datetime.datetime(2020, 8, 17, 0, 0)
parse('2020.8.17')
datetime.datetime(2020, 8, 17, 0, 0)
parse('2020/8/17')
datetime.datetime(2020, 8, 17, 0, 0)
parse('6-12-2020',dayfirst=True)
datetime.datetime(2020, 12, 6, 0, 0)
parse('6-12-2020',dayfirst=False)
datetime.datetime(2020, 6, 12, 0, 0)
pandas 中
pd.to_datetime()
pd.date_range()
datelist = ['2020/8/16','2020/8/17']
pd.to_datetime(datelist)
DatetimeIndex(['2020-08-16', '2020-08-17'], dtype='datetime64[ns]', freq=None)
# 被转换的值有缺失值
datelist2 = ['2020/8/16','2020/8/17', NA , None]
pd.to_datetime(datelist2)
DatetimeIndex(['2020-08-16', '2020-08-17', 'NaT', 'NaT'], dtype='datetime64[ns]', freq=None)
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值