python获取前一天
A. python根据时间戳获取时分秒
时间戳可简单理解为自1970/01/01/ 00:00:00 到现在经过的秒数,如果要计算日期运算,因为涉及到润年,一般使用语言自带的库实现比较简单和高效。但如果只是取时间即时分秒,完全可以不用依赖库,通过模运算和取整运算的方式实现,并且性能比内部库函数效率更高。
运行结果,100万次
1000万次
性能快了接近200%,如果有涉及到大数据分析场景,百万甚至千万级别次的调用时,该算法还是有意义的
B. 一道Python实验题,求大神帮帮忙,在线等,挺急的,谢谢了。
代码如下:
import sys
hit_except = False
try:
f = open('123.txt')
while True:
line = f.readline()
print(line,end='')
if not line:
break
except:
hit_except = True
print(f"异常:{sys.exc_info()[0]}")
else:
pass
finally:
if not hit_except:
f.close()
C. python怎样获取字典中前十个
字典为mydict={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11}
#打印字典的所有键值
print(mydict.keys())
#打印字典的所有值
print(mydict.values())
#打印字典的前5个键值
print([i for i in mydict.keys()][:5])
#打印字典的前8个值
print([i for i in mydict.values()][:8])
D. Python获取当前时间前、后一个月的函数
这需求折腾了我半天..
import time
import datetime as datetime
def late_time(time2):
# 先获得时间数组格式的日期
#time2是外部传入的任意日期
now_time = datetime.datetime.strptime(time2, '%Y-%m-%d')
#如需求是当前时间则去掉函数参数改写 为datetime.datetime.now()
threeDayAgo = (now_time - datetime.timedelta(days =30))
# 转换为时间戳
timeStamp =int(time.mktime(threeDayAgo.timetuple()))
# 转换为其他字符串格式
otherStyleTime = threeDayAgo.strftime("%Y-%m-%d")
return otherStyleTime
a = late_time("2019-3-30")
print(a)# 打印2018-02-28
E. 如何在python中获得当前时间前几天的日期
很简单,下面这些代码是获取当前日期的:
importtime
now=time.time()#当前时间戳
print(now)
print(time.ctime(now))#格式化当前时间戳
print(time.localtime(now))#当前时间结构体
mon=time.localtime(now)[1]#从当前时间结构体中提取月
day=time.localtime(now)[2]#从当前时间结构体中提取日
print("当前日期:%s月%s日"%(mon,day))#打印当前月与日
最终打印出来的结过如下:
这里为了演示,将时间戳计算拆解开来了,实际使用中为了提高效率,每天86400秒直接使用。而时间结构体的生成函数也应只使用一次,将返回值赋值给变量,然后从变量中分别提取。
此外还有一点尤其需要注意,Unix时间戳与Windows下不同,单位是毫秒而不是秒,所以在linux等系统下时间差还应额外乘以1000。
F. pandas怎么找出异常日期
将数据类型转换为日期类型
df['date'] = pd.to_datetime(df['date'])
1
将date设置为index
df = df.set_index('date')
1
获取某年的数据
print(df['2010'].head())
1
获取某月的数据
print(df['2013-11'].head())
1
提取全日期字段中的日期和时间项
data4["订单生成时间"] = pd.to_datetime(data4["订单生成时间"])
data4["时间"] = data4["订单生成时间"].dt.hour #提取时间
data4["日期"] = data4["订单生成时间"].dt.date #提取日期
1
2
3
获取某个日期之前/后或时间区间的数据
dataframe的.truncate()函数可以截取某个时期之前或之后的数据,或者某个时间区间的数据,进行统计分析。
注意事项:
使用.truncate()函数对df进行数据集截取,遇到截取数据不符合预期,且若时间序列无序会抛出异常
解决措施:
在使用.truncate()函数对df进行数据集截取之前,需要先使用df=df.sort_values(‘date’)‘date’列按时间先后进行排序,然后使用df = df.set_index('date'),将“date”设置为index,最后再使用df_last=df.truncate(after=‘2019-05-22 16:00:00’)提取指定时间节点之前的数据。
函数语法:
DataFrame.truncate(before=None, after=None, axis=None, =True)
1
参数说明:
before:取值范围:date,string,int,是指截断此索引值之前的所有行
after:取值范围:date,string,int,是指截断此索引值后的所有行
axis:取值范围:{0或’index’,1或’columns’}(可选),是指轴截断。 默认情况截断索引(行)。
:取值范围:boolean,默认为True,返回截断部分的副本
常见用法:
获取2014年以后的数据
print(df.truncate(before='2014').head())
1
获取2013-11月之前的数据,用after
print(df.truncate(after='2013-11').head())
1
获取2016-02月以后的数据,用before
print(df.truncate(before='2016-02').head())
1
获取2019-05-22日16:00:00时之前的数据
df=data.truncate(after='2019-05-22 16:00:00')
1
获取指定时间区间的数据
df=df['2016-02-2':'2016-02-10']
1
获取指定时间区间的数据
df=df['2016-02-2':'2016-02-10']
1
python 获取当前时间及前一天时间
import datetime
from pandas.tseries.offsets import Day
now_time =datetime.datetime.now()#获取当前时间
yes_time = (now_time -1*Day()).strftime('%Y-%m-%d')#格式化
print(yes_time)
1
2
3
4
5
pandas的日期时间间隔运算
import datetime
from datetime import timedelta
df_189[‘订单生成日期’]=pd.to_datetime(df_189[‘订单生成日期’]) #修改“订单生成时间”的数据类型
df_189[‘订单生成日期’]+timedelta(days=1) #后一天的日期
df_189[‘订单生成日期’]-timedelta(days=3) #前3天的日期
选取指定时间范围内/外的数据
##提取3日前日期和7日前日期
now_time =datetime.datetime.now()#获取当前时间
yes_time_7 = (now_time -7*Day()).strftime('%Y-%m-%d')#格式化
yes_time_3= (now_time-3*Day()).strftime("%Y-%m-%d")
print(yes_time_7)
print('='*50)
print(yes_time_3)
df_189['订单生成日期']=pd.to_datetime(df_189['订单生成日期']) #修改“订单生成时间”的数据类型
df_189_7= df_189[df_189['订单生成日期']==yes_time_7]
df_189_3= df_189[df_189['订单生成日期']==yes_time_3]
print(df_189_7.info())
#选取该错误数据对应的时间范围外的数据,多个条件时 '|'代表'或','&'代表'且'
或者
a= df_189[df_189['订单生成日期']=='2019-06-23'] #筛选2019-06-23的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
利用pandas计算DataFrame两列日期的间隔小时数
import pandas as pd
#方法一:
#先利用to_datetime转换为时间格式,tm列的数据形式为'yyyy-MM-dd HH:mm:ss'
df['tm_1'] = pd.to_datetime(df['tm_1'])
df['tm_2'] = pd.to_datetime(df['tm_2'])
#利用".dt.seconds"转换为秒,除以相对于的间隔数得到分钟、小时等
df['diff_time'] = (df['tm_1'] - df['tm_2']).dt.seconds/60
#利用round函数可进行四舍五入
df['diff_time'] = round(df['diff_time'])
#方法二,日期相减变为小时;变为天的话将h替换为D即可:
df['diff_time'] = (df['tm_1'] - df['tm_2']).values/np.timedelta64(1, 'h')
#Dataframe中的时间是不能直接进行相加减的,所以需要先用pandas的to_datetime()方法,转化成时间格式进行加减,然后再转换成df格式
#delta=df1['Time_end']-df1['Time_start'] #直接报错TypeError: unsupported operand type(s) for -: 'str' and 'str'
#日期相减变为小时;变为天的话将h替换为D即可:
sf_df['交易周期']=pd.DataFrame((pd.to_datetime(sf_df['交易完成时间'])-pd.to_datetime(sf_df['订单生成时间'])).values/np.timedelta64(1,'h'))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
numpy中-Datetimes and Timedeltas的使用
日期格式转换
在numpy中,使用np.datetime64('2017-08' , 'D')可以很方便的将字符串转换成日期类型。
import numpy as np
np.datetime64('2017-08-06') #精确到日
>>>
numpy.datetime64('2017-08-06')
np.datetime64('2018-08') #精确到月
>>>
numpy.datetime64('2018-08')
# 通过参数,强制将数据格式转为我们想要的粒度
np.datetime64('2017-08','D') #转化到日
>>>
numpy.datetime64('2017-08-01')
np.datetime64('2017-08','Y') #转化到年
>>>
numpy.datetime64('2017')
a = np.array(['2017-07-01','2017-07-15','2017-08-01'],dtype = np.datetime64) #列表日期
a
>>>
array(['2017-07-01', '2017-07-15', '2017-08-01'], dtype='datetime64[D]')
# 我们也可以使用arange函数初始化数组
b = np.arange('2017-08-01','2017-09-01',dtype = np.datetime64)
b
>>>
array(['2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04',
'2017-08-05', '2017-08-06', '2017-08-07', '2017-08-08',
'2017-08-09', '2017-08-10', '2017-08-11', '2017-08-12',
'2017-08-13', '2017-08-14', '2017-08-15', '2017-08-16',
'2017-08-17', '2017-08-18', '2017-08-19', '2017-08-20',
'2017-08-21', '2017-08-22', '2017-08-23', '2017-08-24',
'2017-08-25', '2017-08-26', '2017-08-27', '2017-08-28',
'2017-08-29', '2017-08-30', '2017-08-31'], dtype='datetime64[D]')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
日期的计算
在numpy中,我们可以进行简单的日期计算
# 两个日期相减,会得到相差的天数
np.datetime64('2017-08-03') - np.datetime64('2017-07-15')
>>>
numpy.timedelta64(19,'D')
# 这里日期可以直接减去对应的天数
np.datetime64('2017-08-03') - np.timedelta64(20,'D')
>>>
#这里日期的粒度必须保证一样,一个是D,一个是M,是不可以相减的
np.datetime64('2017-08-03') - np.timedelta64(1,'M')
>>>
TypeError: Cannot get a common metadata divisor for NumPy datetime metadata [D] and [M] because they have incompatible nonlinear base time units
np.datetime64('2017-08') - np.timedelta64(1,'M')
>>>
numpy.datetime64('2017-07')
(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00')) #按秒计时
(np.datetime64('2014-10-30 23:00:00') - np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h') #计算时间差,并转为小时
>>>
239.0
#计算终止时间-初试时间,转为小时格式,最后格式设置为整型。np.floor((x - start_hour) / np.timedelta64(1, 'h')).astype(np.uint16)
np.floor((np.datetime64('2014-10-30 23:00:00') -
np.datetime64('2014-10-21 00:00:00'))/np.timedelta64(1, 'h')).astype(np.uint16)
>>>
G. python 获取当前月份月初日期和月末日期
使用time模块的time.localtime()获取当前日期,使用calendar模块calendar.monthrange的来获取指定月份的天数。即可得到月初日期和月末日期,代码如下:
importcalendar
importtime
day_now=time.localtime()
day_begin='%d-%02d-01'%(day_now.tm_year,day_now.tm_mon)#月初肯定是1号
wday,monthRange=calendar.monthrange(day_now.tm_year,day_now.tm_mon)#得到本月的天数第一返回为月第一日为星期几(0-6),第二返回为此月天数
day_end='%d-%02d-%02d'%(day_now.tm_year,day_now.tm_mon,monthRange)
print('月初日期为:',day_begin,'月末日期为:',day_end)
效果如下:
H. python怎么获得每个月的第一天和最后一天
第一天不用获取吧,都是1呀,最后一天的话可以使用标准模块的calendar模块的monthrange(year,month)方法
该方法返回指定年月的最后一天星期和日期,类型为tuple,如
importcalendar
printcalendar.monthrange(2015,2)
结果为(6, 28),6为最后一天星期几,28为2月的最后一天日期
I. python获取日期的方法有哪些
python获得某日时间的方法:1、输入“import time”,“print time.time()”命令取得时间戳;2、运用“time.strftime()”方法格式化时间戳为标准格式即可获得某日时间。
python获取日期的方法有哪些?取得当前时间戳
import time
print time.time()
格式化时间戳为标准格式
1print time.strftime('%Y.%m.%d',time.localtime(time.time()))
获取30天前的时间(通过加减秒数来获取现在或者未来某个时间点)
print time.strftime('%Y.%m.%d',time.localtime(time.time()-2592000))
详解:
取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,可以去官方
文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间。
你可以试下下面的方式来取得当前时间的时间戳:
import time
print time.time()
python获取日期的方法是什么?输出的结果是:
1357723206.31
但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理:
time.localtime(time.time())
用time.localtime()方法,作用是格式化时间戳为本地的时间。
python获取日期的方法有哪些?输出的结果是:
time.struct_time(tm_year=2010, tm_mon=7, tm_mday=19, tm_hour=22, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0)
现在看起来更有希望格式成我们想要的时间了。
time.strftime('%Y-%m-%d',time.localtime(time.time()))
最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:
2020-07-14
python获取日期的方法有哪些?输出日期和时间:
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
time.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是time.strftime的参数:
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
以上就是《python获取日期的方法是什么?这个方法才是你需要的》的全部内容,Python是一种动态解释的、强类型定义语言:编写它时不需要定义变量类型,运行时变量类型被强制固定,如果你想知道更多的python的相关方法,可以点击本站的其他文章进行学习。