DataJam

2.datatime常见操作

1.时间字符串转为datetime格式

datetime.strptime可以将字符串转换成日期,strptime的第二个参数是时间日期的格式:

1 import datetime
2 a = '20200913'
3 print (a)
4 b = datetime.datetime.strptime(str(a), "%Y%m%d")
5 print (b)

 

输出:

2020-09-13
2020-09-13 00:00:00

两者的类型发生了变化:

<type 'str'>
<type 'datetime.datetime'>

1 c= datetime.datetime.strftime('20200201', "%Y%m%d")
2 print(c)
2020-09-12

 

二、获取当前时间

1 datetime.datetime.now()

三、判断出生日期

四、获取两个时间的天数差值

1 time1 = datetime.datetime.strptime('20200913',"%Y%m%d")
2 time2 = datetime.datetime.strptime('20210212',"%Y%m%d")
3 time = (time2-time1).days
4 time

结果:

152

 五、填充空值为最小时间

pd.Timestamp.min  #包含时间
# Timestamp('1677-09-21 00:12:43.145225')

pd.Timestamp.min.ceil('D') #不包含时间
# Timestamp('1677-09-22 00:00:00')

pd.to_datetime(df['date'].fillna(pd.Timestamp.min))

六、将Excel中的时间戳格式转化为python中的时间格式

注:此答案仅适用于1900/03/01之后的任何日期

1 from datetime import datetime
2 excel_date = 43040
3 dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + excel_date - 2)
4 tt = dt.timetuple()
5 dt
6 tt

输出结果:

1 datetime.datetime(2017, 11, 1, 0, 0)
2 
3 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=305, tm_isdst=-1)

如果您的 excel_date 是浮点数,请使用以下代码:

 1   def floatHourToTime(fh):
 2 h,r = divmod(fh,1 3 m,r = divmod(r * 60,1 4 回报(
 5  int(h),
 6  int(m),
 7  int(r * 60),
 8  9  
10  excel_date = 42139.23213 
11  dt = datetime.fromordinal(datetime(1900,1,1).toordinal()+ int(excel_date)-212 小时,分钟,秒= floatHourToTime(excel_date%113  dt = dt.replace (小时=小时,分钟=分钟,秒=秒)

 pandas中应用

1 from datetime import datetime
2 def data_transfor(x):
3     try:
4         dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + x - 2)
5         year = dt.year
6         return year
7     except:
8         return pd.Timestamp.min.ceil('D').year
9 work_data['就业年份'] = work_data['就业时间'].apply(data_transfor)

 

posted on 2021-05-26 22:29  DataJam  阅读(221)  评论(0编辑  收藏  举报

导航