Pandas 7.Python时间操作

常用 Python 时间操作方法,与 Pandas 结合

取当前时间

取当前时刻年月日

  • 取年 datetime.now.now().yeay
  • 取月 datetime.now.now().month
  • 取日 datetime.now.now().day
  • 13 位时间戳 int(round(time.time() * 1000))
  • 10 位时间戳 int(time.time())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from datetime import datetime

"""取当前时间与日期"""
datetime.now()
# 2019-06-22 22:15:16.529856

"""取年"""
datetime.now().year
# 2019

"""取月"""
datetime.now().month
# 06

"""取日"""
datetime.now().day
# 22

取当前周数

  • 返回周几 .weekday()+1
  • 返回第几周(当年中).isocalendar()
1
2
3
4
5
6
7
8
from datetime import datetime

"""返回今天是周几"""
datetime.now().weekday()+1

"""范围今天是今年的第几周"""
datetime.now().isocalendar()
# 返回元祖 (2019, 25, 6) 年、第几周、周几

指定日期格式

  1. date() 自动化设置
  2. time() 设置
  3. 利用 strftime() 自定义时间格式
1
2
3
4
5
6
7
from datetime import datetime

datetime.now().date()
# datetime.date(2019, 6, 22)

datetime.now().time()
# datetime.time(22, 26, 52, 200593)
代码 说明
%H 小时(24小时制)
%I 小时(12小时制)
%M 两位数的分钟
%S
%w 星期几(0开始)
%U 每年的第几周,周日为每周第一天
%W 每年的第几周,周一为每周第一天
%F 简写为 年-月-日
%D 简写为 月/日/年

strftime() 案例

1
2
3
from datetime import datetime

datetime.now().strftime('%Y-%m-%d')

字符串转换

时间 ==> 字符串

  1. 取出当前时间
  2. 利用 strftime() 组装成所需格式
  3. 利用 str() 转换成所需字符串
1
2
3
4
from datetime import datetime

now = datetime.now()
str(now.strftime('%Y-%m-%d'))

字符串 ==> 时间

使用 parse() 函数将时间格式转化为字符串格式

1
2
3
4
5
from datetime import datetime
from dateutil.parser import parse

str_time = '2019-06-22'
parse(str_time)

时间索引

Pandas 可以根据时间来对字段数据进行筛选的一种方式

  1. 时间等于 ==
  2. 时间之后 >
  3. 时间之前 >
  4. 时间之间 &

表1

1
2
3
4
5
import pandas as pd

df = pd.read_excel(r'时间操作.xlsx')
"""取成交在8月10日之前的"""
df[df['成交时间']<datetime(2018,8,10)]

表1

1
2
"""在8日到10日之间的"""
df[(df['成交时间']>datetime(2018,8,8))&(df['成交时间']<datetime(2018,8,10))]

表1

时间运算

两个时间之差

  • 差值.days 按天
  • 差值.seconds 按秒
1
2
3
4
5
6
7
from datetime import datetime

cha = datetime.now() - datetime(2019,5,21,19,50)
# 33 days, 2:07:09.066486

cha.days # 取差 按天算
cha.seconds # 取茶 按秒算

时间偏移

指给时间往前或者往后推一段时间,即加或减一段时间。

  1. 利用 timedelta 支持天、秒、微秒偏移
  2. 利用 Pandas 中日期偏移量

timedelta

支持 daysseconds

1
2
3
4
from datetime import datetime, timedelta

date = datetime.now()
date + timedelta(days=1) # 天数加 1

Pands 的 date offset

支持

  • Day(1)
  • Hour(1)
  • Minute(1)
1
2
3
4
5
from pandas.tseries.offsets import Day,Hour,Minute
from datetime import datetime

date = datetime.now()
date + Day(1)