Python Pandas – 从 PeriodIndex 对象获取年份
在使用Pandas处理时间序列数据时,PeriodIndex是一种经常出现的数据类型。PeriodIndex是一种用于表示一段时间的时间段(period)的对象。但有时我们需要从PeriodIndex对象中提取年份,可能会让一些新同学感到不知所措,所以我们来讲一讲如何从PeriodIndex对象获取年份。
前提知识
在使用Python Pandas处理时间序列数据之前,需要明确时间序列数据的两个概念:时间戳(Timestamp)和时间段(Period)。其中时间戳是指特定的时刻,而时间段指一段时间范围。在Pandas中,时间戳使用DatetimeIndex类进行表示,时间段使用PeriodIndex类进行表示。需要通过resample或groupby操作,将数据转化为PeriodIndex类型后才能使用以下的方法。
获取年份的方法
获取PeriodIndex对象中的年份,有以下两种方法:
- 使用.year属性获取
PeriodIndex对象具有一个.year属性,可以用来获取PeriodIndex对象中每个时间段的年份。
拿一个示例来说明:
import pandas as pd
# 创建PeriodIndex对象
dates = pd.date_range('20210101', periods=6, freq='M')
period_index = pd.PeriodIndex(dates, freq='M')
# 使用.year属性获取年份
for period in period_index:
print(period.year)
输出结果如下:
2021
2021
2021
2021
2021
2021
从输出结果来看,我们成功地从PeriodIndex对象中获取了每个时间段的年份,这就是使用.year属性的方法。
- 使用to_timestamp()方法获取
另一种获取PeriodIndex对象中年份的方法是使用to_timestamp()方法。to_timestamp()方法会将每个时间段转换为该时间段中的某个时间点,例如我们可以将月份转换为每月的第一天,然后使用DatetimeIndex对象的.year属性获取年份。
再拿一个示例来说明:
import pandas as pd
# 创建PeriodIndex对象
dates = pd.date_range('20210101', periods=6, freq='M')
period_index = pd.PeriodIndex(dates, freq='M')
# 使用to_timestamp()方法和.year属性获取年份
for period in period_index:
print(period.to_timestamp().year)
输出结果如下:
2021
2021
2021
2021
2021
2021
从输出结果来看,我们也成功地从PeriodIndex对象中获取了每个时间段的年份,这就是使用to_timestamp()方法的方法。
需要注意的是,使用.to_timestamp()方法将时间段转换为时间戳时,会将时间段转换为该时间段的起始时间,例如“2021年1月”会被转换为“2021年1月1日 00:00:00”。
结论
本文介绍了两种从PeriodIndex对象获取年份的方法,分别是使用.year属性和使用to_timestamp()方法。这些方法可以帮助我们更方便地处理时间序列数据。