Python Pandas – 返回表示UTC日期和时间的新时间戳
在使用Python Pandas处理数据时,经常需要使用日期和时间,其中UTC时间更是常用。那么如何在Python Pandas中返回表示UTC日期和时间的新时间戳呢?
Pandas Timestamp
首先要了解的是,Pandas中的时间戳类型是Timestamp。Timestamp提供了丰富的功能和方法来操作时间戳。我们可以使用pd.Timestamp()来创建一个时间戳对象。
import pandas as pd
ts = pd.Timestamp('2022-02-22 22:22:22')
print(ts)
输出结果如下:
2022-02-22 22:22:22
Pandas to_datetime
如果数据中包含日期字符串,我们可以使用to_datetime()方法将其转换为Pandas的时间戳对象。需要注意的是,to_datetime()中的utc参数默认为False,如果需要返回UTC时间戳,则需要将utc参数设为True。
import pandas as pd
str_time = '2022-02-22 22:22:22'
dt = pd.to_datetime(str_time, utc=True)
print(dt)
输出结果如下:
2022-02-22 22:22:22+00:00
我们可以看到,输出结果中带有+00:00,表示UTC时间。
Pandas date_range
如果我们需要生成一段时间内的时间戳序列,则可以使用date_range()方法,其中start和end参数用于指定起始和结束时间,freq参数用于指定时间间隔。
import pandas as pd
start_time = pd.Timestamp('2022-02-22 00:00:00')
end_time = pd.Timestamp('2022-02-23 00:00:00')
freq = '10T'
timestamps = pd.date_range(start=start_time, end=end_time, freq=freq, tz='UTC')
print(timestamps)
输出结果如下:
DatetimeIndex(['2022-02-22 00:00:00+00:00', '2022-02-22 00:10:00+00:00',
'2022-02-22 00:20:00+00:00', '2022-02-22 00:30:00+00:00',
'2022-02-22 00:40:00+00:00', '2022-02-22 00:50:00+00:00',
'2022-02-22 01:00:00+00:00', '2022-02-22 01:10:00+00:00',
'2022-02-22 01:20:00+00:00', '2022-02-22 01:30:00+00:00',
...
'2022-02-22 22:20:00+00:00', '2022-02-22 22:30:00+00:00',
'2022-02-22 22:40:00+00:00', '2022-02-22 22:50:00+00:00',
'2022-02-22 23:00:00+00:00', '2022-02-22 23:10:00+00:00',
'2022-02-22 23:20:00+00:00', '2022-02-22 23:30:00+00:00',
'2022-02-22 23:40:00+00:00', '2022-02-22 23:50:00+00:00'],
dtype='datetime64[ns, UTC]', length=145, freq='10T')
我们可以看到,timestamps中的时间戳表示的都是UTC时间。
Pandas DateOffset
如果我们需要对时间戳进行加减运算,则可以使用DateOffset对象,该对象可以用于指定时间偏移量。偏移量可以以可迭代对象的形式一次指定多个。
import pandas as pd
ts = pd.Timestamp('2022-02-22 22:22:22', tz='UTC')
offset = pd.DateOffset(days=1, hours=1)
new_ts = ts + offset
print(new_ts)
输出结果如下:
2022-02-23 23:22:22+00:00
可以看到,new_ts是在ts的基础上加上了1天1小时的时间偏移。
Pandas to_period
有时候我们需要将时间戳转换为时间段,例如按月、按周等。这时可以使用to_period()方法。
import pandas as pd
ts = pd.Timestamp('2022-02-22 22:22:22', tz='UTC')
period = ts.to_period('M')
print(period)
输出结果如下:
2022-02
可以看到,period表示的是2022年2月这个时间段。
结论
在Python Pandas中,要返回表示UTC日期和时间的新时间戳,可以使用pd.to_datetime()方法,将utc参数设为True即可返回UTC时间戳。如果需要生成时间戳序列,可以使用pd.date_range()方法。对时间戳进行加减运算时,可以使用pd.DateOffset对象。如果需要将时间戳转换为时间段,则可以使用to_period()方法。掌握了这些方法,我们可以更方便地处理时间和日期数据。
极客笔记