文章目录
每篇前言一、to_datetime参数说明(代码实战)1. arg2. errors3. dayfirst4. yearfirst5. utc6. format7. exact8. unit9. infer_datetime_format10. origin11. cache 二、返回值1. datetime 三、报错1. ParserError2. ValueError 四、书籍推荐
每篇前言
??作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6 |
一、to_datetime参数说明(代码实战)
语法格式:
Pandas.to_datetime( arg: DatetimeScalarOrArrayConvertible, errors: str = "raise", dayfirst: bool = False, yearfirst: bool = False, utc: bool | None = None, format: str | None = None, exact: bool = True, unit: str | None = None, infer_datetime_format: bool = False, origin="unix", cache: bool = True,) -> DatetimeIndex | Series | DatetimeScalar | NaTType | None:
1. arg
要转换为日期时间的对象。如果提供了DataFrame,则该方法至少需要以下列:“年”、“月”、“日”。接收参数:int、float、str、datetime、list、tuple、1-d数组、Series、DataFrame/dict类
(1)接收时间戳(float):
import pandas as pdimport numpy as npimport timet = time.time()print(t,type(t))df = pd.to_datetime(t)print(df)
运行结果:
(2)接收字符串:
import pandas as pdimport numpy as npimport timedf = pd.to_datetime('2022-10-10')print(df)t = time.asctime()print(t, type(t))df = pd.to_datetime(t)print(df)
运行结果:
(3)datetime类型:
import pandas as pdimport numpy as npimport timeimport datetimet = datetime.datetime.now()print(t, type(t))df = pd.to_datetime(t)print(df)
运行结果:
(4)接收DataFrame类型:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ], 'month': [11, 10], 'day': [11, 10]})print(df)df_time = pd.to_datetime(df)print(df_time)
运行结果:
2. errors
指定errors忽略 Out of bounds nanosecond timestamp , 或将报错datetime转为NaT。接收参数:{‘ignore’,‘raise’,‘force’},默认’raise’。
如果“raise”,则无效解析将引发异常。如果为“coerce”,则无效解析将被设置为NaT。如果“ignore”,则无效解析将返回输入。(1)设置为raise
:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021], 'month': [11, 10], 'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='raise')print(df_time)
运行结果:一个没有第40号所以报错
(2)设置为coerce
:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021], 'month': [11, 10], 'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='coerce')print(df_time)
运行结果:
(3)设置为ignore
:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021], 'month': [11, 10], 'day': [40, 40]})print(df)df_time = pd.to_datetime(df,errors='ignore')print(df_time)
运行结果:
3. dayfirst
如果arg是str或类似列表,请指定日期解析顺序。如果为True,则以第一天为单位解析日期,例如“10/11/12”解析为2012-11-10。接收bool类型,默认为false。dayfirst=True不严格,但更喜欢使用dayfirst进行解析。如果无法根据给定的dayfirst选项解析带分隔符的日期字符串,例如to_datetime([31-12-2021]),则会显示警告。
传31天进去:
import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime('31/11/12', dayfirst=False)print(df_time)
运行结果:
4. yearfirst
如果arg是str或类似列表,请指定日期解析顺序。如果True以年份开头解析日期,例如“10/11/12”解析为2010-11-12。如果dayfirst和yearfirst都为True,则yearfirsts前面是(与dateutil相同)。警告:yearfirst=True不严格,但更喜欢使用yearfirst进行解析。import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'day': ['22/10/24', '21/11/11']})print(df)df_time = pd.to_datetime(df['day'], yearfirst=True)print(df_time)
运行结果:
5. utc
控制时区相关的解析、本地化和转换。接收bool布尔类型,默认为None
如果为True,则该函数始终返回一个识别时区的UTC本地化时间戳、序列或日期时间索引。为此,时区原始输入本地化为UTC,而时区感知输入转换为UTC。如果为False(默认),输入将不会强制为UTC。时区原始输入将保持原始,而时区感知输入将保持其时间偏移。混合偏移(通常为夏令时)存在限制,有关详细信息,请参见示例部分。6. format
解析时间的strftime,例如“%d/%m/%Y”。请注意,“%f”将一直解析到纳秒。接收字符串类型。
格式化字符串 | 日期/时间说明 | 值范围和实例 |
---|---|---|
%Y | 年份 | 0000~9999,例如:2022 |
%m | 月份 | 01~12,例如:3 |
%B | 月份名称 | January~December,例如:April |
%b | 月份名称缩写 | Jan~Dec,例如:Apr |
%d | 日期 | 01~31,例如:20 |
%A | 星期 | Monday~Sunday,例如:Wednesday |
%a | 星期缩写 | Mon~Sun,例如:Wed |
%H | 小时(24h制) | 00~23,例如:12 |
%I | 小时(12h制) | 01~12,例如:7 |
%p | 上\下午 | AM\PM,例如:PM |
%M | 分钟 | 00~59,例如:10 |
%S | 秒 | 00~59,例如:20 |
%w | 星期几(具体) | 1~7,例如:7 |
%W | 整年的第几周 | 1-52,例如:2 |
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ], 'month': [11, 10], 'day': [11, 10]})print(df)df_time = pd.to_datetime(df, format='%Y-%m-%d')print(df_time)
运行结果:
7. exact
控制格式的使用方式,接收bool布尔类型,默认为True:
如果为True,则需要精确的格式匹配。如果为False,则允许格式与目标字符串中的任何位置匹配。8. unit
接收字符串,默认为“ns”。arg的单位(D,s,ms,us,ns)表示单位,即整数或浮点数。这将基于原点。例如,使用unit='ms’和origin=‘unix’,这将计算到unix历元开始的毫秒数。注意:要求arg参数传递时间戳,不然会报错。
(1)传递其他时间格式:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'day': ['22/10/24', '21/11/11']})print(df)df_time = pd.to_datetime(df , yearfirst=True)print(df_time)
运行结果:
(2)传递时间戳:
import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime(time.time(), unit='ms')print(df_time)
运行结果:
9. infer_datetime_format
如果为True且未给出格式,请尝试根据第一个非NaN元素推断日期时间字符串的格式,如果可以推断,请切换到更快的方法来解析它们。在某些情况下,这可以将解析速度提高5-10倍。当数据量大的时候用这个参数可以提高解析速度!
10. origin
定义参考日期。数值将被解析为自该参考日期以来的单位数(按单位定义)。标量,默认为“unix”
如果为:“unix”(或POSIX)时间;原点设置为1970-01-01。如果为:“julian”,单位必须为“D”,原点设置为朱利安日历的开始。儒略日0被指定为公元前4713年1月1日中午开始的一天。如果“时间戳”可转换,则“原点”设置为“由原点标识的时间戳”。(1)指定时间:
import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime([1, 2, 3], unit='D', origin='2022-01-01')print(df_time)
运行结果:
(2)不指定时间:不指定时间则默认从19700101开始
import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime([1, 2, 3], unit='D')print(df_time)
运行结果:
11. cache
如果为True,请使用唯一的已转换日期缓存来应用日期时间转换。在解析重复的日期字符串时,尤其是带有时区偏移量的字符串时,可能会产生显著的加速。缓存仅在至少有50个值时使用。存在越界值将导致缓存无法使用,并可能会降低解析速度。接收bool类型参数,默认为True。在版本0.25.0中更改:将默认值从False更改为True。
二、返回值
1. datetime
如果解析成功。返回类型取决于输入(括号中的类型对应于时区或时间戳解析不成功时的回退):
标量:时间戳(或datetime.datetime)数组:DatetimeIndex(或对象dtype包含datetime.datetime的序列)Series:datetime64数据类型系列(或包含datetime.datetime的对象数据类型系列)DataFrame:datetime64数据类型系列(或包含datetime.datetime的对象数据类型系列)(1)arg传递标量:
import pandas as pdimport timeimport datetimedf_time = pd.to_datetime(time.time())print(df_time)print(type(df_time))
运行结果:
(2)arg传递数组返回DatetimeIndex
import pandas as pdimport numpy as npimport timeimport datetimedf_time = pd.to_datetime(['2017-08-01', '2018-08-02', '2018-08-03', '2018-08-04','2018-08-05'])print(df_time)print(type(df_time))
运行结果:
(3)arg传递Series返回datetime64数据类型系列:
import pandas as pdimport timeimport datetimeser_obj = pd.Series(['2017-08-01', '2018-08-02', '2018-08-03', '2018-08-04','2018-08-05'])df_time = pd.to_datetime(ser_obj)print(df_time)print(type(df_time))
运行结果:
(4)argDataFrame:
import pandas as pdimport numpy as npimport timeimport datetimedf = pd.DataFrame({'year': [2022, 2021, ], 'month': [11, 10], 'day': [11, 10]})print(df)df_time = pd.to_datetime(df)print(df_time)
运行结果:
三、报错
1. ParserError
报错信息:When parsing a date from string fails.
报错翻译:从字符串解析日期失败时。
2. ValueError
发生另一个日期时间转换错误时。例如,当DataFrame中缺少“year”、“month”、“day”列中的一列时,或者当Timezone感知日期时间时。datetime是在类似于混合时间偏移的数组中找到的,并且utc=False。
四、书籍推荐
书籍展示:《Web安全攻防从入门到精通》【书籍内容简介】
全书共21章,第1章到第6章讲解入门知识,包括HTTP基本概念、工具实战、信息收集、靶场搭建等内容;第7章到第20章讲解Web渗透测试的14个典型漏洞案例,包括SQL注入、XSS漏洞、CSRF漏洞、SSRF漏洞、任意文件上传、业务逻辑漏洞等内容;第21章是项目实战,主要模拟真实Web安全评估项目。京东自营:http://product.dangdang.com/29460729.html