Pandas时间差(Timedelta)及时间范围(date_range)操作
发布时间:2020-08-31 22:41:00
作者:ynkulusi
时间差(Timedelta)是时间上的差异,以不同的单位来表示。例如:日,小时,分钟,秒。它们可以是正值,也可以是负值。
可以使用各种参数创建 Timedelta 对象
通过传递字符串,可以创建一个 timedelta 对象。参考以下示例代码 -
import pandas as pd
timediff = pd.Timedelta('2 days 2 hours 15 minutes 30 seconds')
print(timediff)
执行上面救命代码,得到以下结果 -
2 days 02:15:30
通过传递一个整数值与指定单位,这样的一个参数也可以用来创建 Timedelta 对象。
timediff = pd.Timedelta(6,unit='h')
print(timediff)
执行上面救命代码,得到以下结果 -
0 days 06:00:00
例如 - 周,天,小时,分钟,秒,毫秒,微秒,纳秒的数据偏移也可用于构建。
timediff = pd.Timedelta(days=2)
print(timediff)
执行上面救命代码,得到以下结果 -
2 days 00:00:00
s = pd.Series(pd.date_range('2018-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
print(df)
执行上面示例代码,得到以下结果 -
A B C
0 2018-01-01 0 days 2018-01-01
1 2018-01-02 1 days 2018-01-03
2 2018-01-03 2 days 2018-01-05
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
df['D']=df['C']-df['B']
print(df)
执行上面示例代码,得到以下结果 -
A B C D
0 2018-01-01 0 days 2018-01-01 2018-01-01
1 2018-01-02 1 days 2018-01-03 2018-01-02
2 2018-01-03 2 days 2018-01-05 2018-01-03
pd.date_range('20200601',periods=7) #生成7个间隔1天的连续日期系列
pd.date_range('20200601','20200603',freq='H') #生成2020年6月1日0时到2020年6月3日0时之间以整小时为间隔的连续时间系列
datelist = pd.date_range('2020/11/21', periods=5,freq='M') #按月为周期输出最近5个月的月末日期
datelist = pd.bdate_range('2020/11/03', periods=5) #生成5个工作日期范围,bdate是排除周六周日
datelist = pd.date_range('16:00:00', periods=5,freq='U') #freq='U'是微秒,T是分钟,S是秒,L是毫秒,N是纳秒
大量的字符串别名被赋予常用的时间序列频率。我们把这些别名称为偏移别名。
别名 描述说明
B 工作日频率
BQS 商务季度开始频率
D 日历/自然日频率
A 年度(年)结束频率
W 每周频率
BA 商务年底结束
M 月结束频率
BAS 商务年度开始频率
SM 半月结束频率
BH 商务时间频率
SM 半月结束频率
BH 商务时间频率
BM 商务月结束频率
H 小时频率
MS 月起始频率
T, min 分钟的频率
SMS SMS半开始频率
S 秒频率
BMS 商务月开始频率
L, ms 毫秒
Q 季度结束频率
U, us 微秒
BQ 商务季度结束频率
N 纳秒
BQ 商务季度结束频率
QS 季度开始频率
可以使用各种参数创建 Timedelta 对象
通过传递字符串,可以创建一个 timedelta 对象。参考以下示例代码 -
import pandas as pd
timediff = pd.Timedelta('2 days 2 hours 15 minutes 30 seconds')
print(timediff)
执行上面救命代码,得到以下结果 -
2 days 02:15:30
通过传递一个整数值与指定单位,这样的一个参数也可以用来创建 Timedelta 对象。
timediff = pd.Timedelta(6,unit='h')
print(timediff)
执行上面救命代码,得到以下结果 -
0 days 06:00:00
例如 - 周,天,小时,分钟,秒,毫秒,微秒,纳秒的数据偏移也可用于构建。
timediff = pd.Timedelta(days=2)
print(timediff)
执行上面救命代码,得到以下结果 -
2 days 00:00:00
s = pd.Series(pd.date_range('2018-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
print(df)
执行上面示例代码,得到以下结果 -
A B C
0 2018-01-01 0 days 2018-01-01
1 2018-01-02 1 days 2018-01-03
2 2018-01-03 2 days 2018-01-05
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
df['D']=df['C']-df['B']
print(df)
执行上面示例代码,得到以下结果 -
A B C D
0 2018-01-01 0 days 2018-01-01 2018-01-01
1 2018-01-02 1 days 2018-01-03 2018-01-02
2 2018-01-03 2 days 2018-01-05 2018-01-03
pd.date_range('20200601',periods=7) #生成7个间隔1天的连续日期系列
pd.date_range('20200601','20200603',freq='H') #生成2020年6月1日0时到2020年6月3日0时之间以整小时为间隔的连续时间系列
datelist = pd.date_range('2020/11/21', periods=5,freq='M') #按月为周期输出最近5个月的月末日期
datelist = pd.bdate_range('2020/11/03', periods=5) #生成5个工作日期范围,bdate是排除周六周日
datelist = pd.date_range('16:00:00', periods=5,freq='U') #freq='U'是微秒,T是分钟,S是秒,L是毫秒,N是纳秒
大量的字符串别名被赋予常用的时间序列频率。我们把这些别名称为偏移别名。
别名 描述说明
B 工作日频率
BQS 商务季度开始频率
D 日历/自然日频率
A 年度(年)结束频率
W 每周频率
BA 商务年底结束
M 月结束频率
BAS 商务年度开始频率
SM 半月结束频率
BH 商务时间频率
SM 半月结束频率
BH 商务时间频率
BM 商务月结束频率
H 小时频率
MS 月起始频率
T, min 分钟的频率
SMS SMS半开始频率
S 秒频率
BMS 商务月开始频率
L, ms 毫秒
Q 季度结束频率
U, us 微秒
BQ 商务季度结束频率
N 纳秒
BQ 商务季度结束频率
QS 季度开始频率
分类:python
评论数:0
阅读数:865