pandas中对于时间TimeStamp的处理
pandas.to_datetime()
pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)[source]¶
Parameters
arg int, float, str, datetime, list, tuple, 1-d array, Series, DataFrame/dict-like
The object to convert to a datetime
format str, default None
The strftime to parse time, eg “%d/%m/%Y
”, note that
“%f
” will parse all the way up to nanoseconds.
该函数可以接受一个series,可以接受一个dateFrame。如果不确定它是否可以以默认的格式去解析你的时间,format参数可以不传递。
1 | df = pd.DataFrame({'year': [2015, 2016], |
上面的这种产生datetime
的方式,在创建dateframe的时候,可以指定缩写或者缩写的复数形式,其他形式不接受:[‘year’, ‘month’, ‘day’, ‘minute’, ‘second’, ‘ms’, ‘us’, ‘ns’])
pandas.to_timedelta()
timedelta是两个时间之间的差值,该函数可以帮助我们求两个timestamp
之间的差是多少(单位可以是days,hours,minutes,seconds
)
Parameters
arg str, timedelta, list-like or Series
unit str, optional
Denotes the unit of the arg for numeric arg. Defaults to
"ns"
.Possible values:
- ‘W’
- ‘D’ / ‘days’ / ‘day’
- ‘hours’ / ‘hour’ / ‘hr’ / ‘h’
- ‘m’ / ‘minute’ / ‘min’ / ‘minutes’ / ‘T’
- ‘S’ / ‘seconds’ / ‘sec’ / ‘second’
- ‘ms’ / ‘milliseconds’ / ‘millisecond’ / ‘milli’ / ‘millis’ / ‘L’
- ‘us’ / ‘microseconds’ / ‘microsecond’ / ‘micro’ / ‘micros’ / ‘U’
- ‘ns’ / ‘nanoseconds’ / ‘nano’ / ‘nanos’ / ‘nanosecond’ / ‘N’
这里如果传入的是str,是不允许再传入unit参数了,不然会报错。
1 | >> pd.to_timedelta('15days 2hours') |
Series.dt()
1 | >> seconds_series = pd.Series(pd.date_range("2000-01-01", periods=3, freq="s")) |
dt是Series的一个方法,当调用dt时,Series中必须是timestamp的格式。
当调用完dt后可以获取时间的具体年份等信息:
1 | seconds_series.dt.date # 2000-01-01 |
有的时候我们想获取某一天是全年中的第几周,这时候weekday就不管用了,此时采用:
1 | dseries.dt.isocalendar()['week'] |