import pandas as pd
import random
from datetime import datetime
data = {
'number': ['20200520201{}'.format(str(i))for i in range(1, 7)],
'time': [datetime(2004, 10, 1, 10, 32, 45, 85), datetime(2000, 11, 27),
datetime(2007, 1, 27), datetime(2002, 8, 15),
datetime(2008, 1, 1), datetime(2002, 12, 31)],
}
df = pd.DataFrame(data)
number time
0 202005202011 2004-10-01 10:32:45.000085
1 202005202012 2000-11-27 00:00:00.000000
2 202005202013 2007-01-27 00:00:00.000000
3 202005202014 2002-08-15 00:00:00.000000
4 202005202015 2008-01-01 00:00:00.000000
5 202005202016 2002-12-31 00:00:00.000000
df['date'].dt.time//timetz 获取时间(带秒)
0 10:32:45.000085
1 00:00:00
2 00:00:00
3 00:00:00
4 00:00:00
5 00:00:00
Name: time, dtype: object
df['time'].dt.month//second(秒)
df['time'].dt.dayofweek//weekday 一周中的第几天
df['time'].dt.dayofyear 一年中的第几天
df['time'].dt.day_name() 将日期转为星期
0 Friday
1 Monday
2 Saturday
3 Thursday
4 Tuesday
5 Tuesday
Name: time, dtype: object
df['time'].dt.is_leap_year 是否是闰年
df['birthday'].dt.is_month_end//is_month_start 是否是一个月的最后/第一天(quarter 季度,year 年)
df['time'].dt.to_period(freq='Y') 要获取的部分(M月,D日期)
df['time'].dt.to_pydatetime() 返回datetime模块时间类型
array([datetime.datetime(2004, 10, 1, 10, 32, 45, 85),
datetime.datetime(2000, 11, 27, 0, 0),
datetime.datetime(2007, 1, 27, 0, 0),
datetime.datetime(2002, 8, 15, 0, 0),
datetime.datetime(2008, 1, 1, 0, 0),
datetime.datetime(2002, 12, 31, 0, 0)], dtype=object)
df['time'].dt.strftime('%Y/%m/%d %H:%I:%S') 修改日期格式
0 2004/10/01 10:10:45
1 2000/11/27 00:12:00
2 2007/01/27 00:12:00
3 2002/08/15 00:12:00
4 2008/01/01 00:12:00
5 2002/12/31 00:12:00
Name: time, dtype: object
df1=df['time'].dt.tz_localize('Asia/Shanghai') 按上海地区标准化
0 2004-10-01 10:32:45.000085+08:00
1 2000-11-27 00:00:00+08:00
2 2007-01-27 00:00:00+08:00
3 2002-08-15 00:00:00+08:00
4 2008-01-01 00:00:00+08:00
5 2002-12-31 00:00:00+08:00
Name: time, dtype: datetime64[ns, Asia/Shanghai]
df1.dt.tz 获取时区信息
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>