<_datetime()时间处理函数
<_datetime()
因为不了解该段代码意思:
# 不过要注意,数据⾥有时间出错的格式,所以我们需要 errors='coerce'
data['used_time'] = (pd.to_datetime(data['creatDate'], format='%Y%m%d', errors='coerce') -
<_datetime(data['regDate'], format='%Y%m%d', errors='coerce')).dt.days
<_datetime将参数转换为⽇期时间
<_datetime(arg: DatetimeScalar, errors: str = '...', dayfirst: bool = '...', yearfirst: bool = '...', utc: Optional[bool] = '...', format: Optional[str] = '...', exact: bool = '...', unit: Optional[str] = '...', infer_datetime_format: bool = '...', _datetime(arg: ‘Series’, errors: str = '...', dayfirst: bool = '...', yearfirst: bool = '...', utc: Optional[bool] = '...', format: Optional[str] = '...', exact: bool = '...', unit: Optional[str] = '...', infer_datetime_format: bool = '...', origin='...', cache: bool = _datetime(arg: Union[List, Tuple], errors: str = '...', dayfirst: bool = '...', yearfirst: bool = '...', utc: Optional[bool] = '...', form
at: Optional[str] = '...', exact: bool = '...', unit: Optional[str] = '...', infer_datetime_format: bool = '...', origin=
格式如下:
#输⼊下⾯,即可知道参数
import pandas as pd
<_datetime
#参数如下
<_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)
参数:
(1)arg:int,float,str,datetime,list,tuple,1-d数组,Series,DataFrame / dict-like,要转换为⽇期时间的对象
(2)errors:{'ignore','raise','coerce'},默认为'raise'
如果为“ raise”,则⽆效的解析将引发异常
如果为“coerce”,则将⽆效解析设置为NaT
如果为“ ignore”,则⽆效的解析将返回输⼊
(3)dayfirst:bool,默认为False,
如果arg是str或类似列表,则指定⽇期解析顺序。
如果为True,则⾸先解析⽇期,例如12/10/11解析为2011-10-12。
警告:dayfirst = True并不严格,但更喜欢使⽤day first进⾏解析(这是⼀个已知的错误,基于dateutil的⾏为)
(4)yearfirst:布尔值,默认为False,
如果arg是str或类似列表,则指定⽇期解析顺序。
如果True解析⽇期以年份为第⼀,则将10/11/12解析为2010-11-12。
如果dayfirst和yearfirst均为True,则在yearfirst之后(与dateutil相同)。
警告:yearfirst = True并不严格,但更喜欢使⽤year first进⾏解析(这是⼀个已知的错误,基于dateutil的⾏为)。
#如果是dayfirst,则⽇⽉年,如果yearfirst = True,则年⽉⽇,默认的是⽉⽇年
<_datetime('10/11/12',dayfirst = True) #Timestamp('2012-11-10 00:00:00')
<_datetime('12/10/11',dayfirst = True) # Timestamp('2011-10-12 00:00:00')
<_datetime('10/11/12',yearfirst = True) # Timestamp('2010-11-12 00:00:00')
<_datetime('10/11/12') #Timestamp('2012-10-11 00:00:00')
(5)utc: bool,默认值 None,如果为True,则返回UTC DatetimeIndex(也转换任何⽀持tz的datetime.datetime对象)
(6)format:str,格式,default None,解析时间的strftime,例如“%d /%m /%Y”,请注意,“%f”将⼀直解析直⾄纳秒。有关选择的更多信息,请参见strftime⽂档: : 。
(7)exact:精度,bool:True by default,表现为:如果为True,则需要精确的格式匹配。如果为False,则允许格式匹配⽬标字符串中的任何位置。
(8)unit: str,单位,default ‘ns’,arg的单位(D,s,ms,us,ns)表⽰单位,它是整数或浮点数。这将基于原点。例如,在unit ='ms'和origin ='unix'(默认值)的情况下,这将计算到unix纪元开始的毫秒数
(9)infer_datetime_format:bool,默认为False,如果为True且未给出格式,请尝试根据第⼀个⾮NaN元素推断⽇期时间字符串的格式,如果可以推断出⽇期时间字符串的格式,请切换到解析它们的更快⽅法。在某些情况下,这可以
使解析速度提⾼约5-10倍。
(10)origin:标量, default ‘unix’,
定义参考⽇期。⾃该参考⽇期以来,数值将被解析为单位数(由unit定义)。
如果是“ unix”(或POSIX)时间;原点设置为1970-01-01。
如果为'julian',则单位必须为'D',并且原点设置为Julian Calendar的开头。朱利安天数0被指定为从4713年1⽉1⽇中午开始的那⼀天。
如果时间戳可转换,则将原点设置为由原点标识的时间戳。
(11)cache:布尔值,默认为True
如果为True,则使⽤唯⼀的转换⽇期缓存来应⽤datetime转换。解析重复的⽇期字符串时,尤其是带有时区偏移的⽇期字符串时,可能会⼤⼤提⾼速度。仅当⾄少有50个值时才使⽤缓存。越界值的存在将使⾼速缓存不可⽤,并可能减慢
解析速度
0.23.0版中的新功能。在0.25.0版中进⾏了更改: -将默认值从False更改为True。
返回值:
datetime
如果解析成功。返回类型取决于输⼊:
list-like: DatetimeIndex
Series: Series of datetime64 dtype
scalar: Timestamp
如果⽆法返回指定的类型(例如,当输⼊的任何元素在Timestamp.min之前或Timestamp.max之后),则返回将具有datetime.datetime类型(或对应的数组/系列)。
例⼦:
从DataFrame的多个列中组合⼀个⽇期时间。键可以是常见的缩写,例如['year','month','day','minute','second','ms','us','ns'])或相同的复数形式
import pandas as pd
<_datetime
df = pd.DataFrame({'year': [2015, 2016],
'month': [2, 3],
'day': [4, 5]})
df
'''
year month day
0 2015 2 4
1 2016 3 5
'''
<_datetime(df)
'''
0 2015-02-04
1 2016-03-05
dtype: datetime64[ns]
'''
日期字符串是什么如果⽇期不符合时间戳限制,则传递errors ='ignore'将返回原始输⼊,⽽不引发任何异常。
如果将error ='coerce'传递给NaT,则除了将⾮⽇期(或不可解析的⽇期)强制为NaT外,还将对NaT强制执⾏越界⽇期。pd.to_datetime('13000101', format='%Y%m%d', errors='ignore')
#datetime.datetime(1300, 1, 1, 0, 0)
<_datetime('13000101', format='%Y%m%d', errors='coerce')
#NaT
传递infer_datetime_format = True通常可以加快解析速度,如果解析不是完全采⽤ISO8601格式,⽽是采⽤常规格式。
s = pd.Series(['3/11/2000', '3/12/2000', '3/13/2000'] * 1000)
s.head(1)
#0 3/11/2000
#dtype: object
%_datetime(s, infer_datetime_format=True)
#1.53 ms ± 139 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)
%_datetime(s, infer_datetime_format=False)
#1.51 ms ± 21.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
使⽤Unix纪元时间
<_datetime(1490195805, unit='s')
#Timestamp('2017-03-22 15:16:45')
<_datetime(1490195805433502912, unit='ns')
#Timestamp('2017-03-22 15:16:45.433502912')
使⽤⾮unix纪元原点
<_datetime([1, 2, 3], unit='D',
origin=pd.Timestamp('1960-01-01'))
# DatetimeIndex(['1960-01-02', '1960-01-03', '1960-01-04'], dtype='datetime64[ns]', freq=None)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论