如何创建以年为频率的 pandas DatetimeIndex?
How to create a pandas DatetimeIndex with year as frequency?
使用 pandas.date_range(startdate, periods=n, freq=f)
函数,您可以创建一系列 pandas Timestamp
对象,其中 freq
可选参数表示频率(秒、分、时、日...) 范围中。
documentation 没有提到预期传入的文字,但几分钟后您可以轻松找到其中的大部分内容。
- 's' : 第二
- 'min' : 分钟
- 'H' : 小时
- 'D' : 天
- 'w' : 周
- 'm' : 月
但是,none of 'y'、'Y'、'yr' 等创建以年为频率的日期。
有谁知道要传递什么,或者是否有可能?
您可以使用频率字符串的倍数。例如:
pd.date_range('01/01/2010',periods=10,freq='365D')
此代码将为您提供包含 01/01/2010、01/01/2011 等的系列,我认为这正是您要查找的内容。当然,这里的问题是你会 运行 遇到闰年的问题。
您可以使用月份,然后每 12 个月选择一次:
months=pandas.date_range(start=datetime.datetime.now(),periods=120,freq='M')
year=[months[11*i] for i in range(12)]
您还可以这样做:
usingDays=pandas.date_range(start=datetime.datetime.now(),periods=10,freq='365D')
但这在闰年时效果不佳。
年度索引到年初或年底
年末频率 freq='A'
,年初频率 'AS'
。检查 aliases in the documentation.
例如。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=4, freq='A')
returns
DatetimeIndex(['2000-12-31', '2001-12-31', '2002-12-31', '2003-12-31'], dtype='datetime64[ns]', freq='A-DEC', tz=None)
到任意月份开始的年度索引
如果您需要从特定时间开始每年一次,请使用 anchored offset,
例如。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=10, freq='AS-AUG')
returns
DatetimeIndex(['2000-08-01', '2001-08-01', '2002-08-01', '2003-08-01'], dtype='datetime64[ns]', freq='AS-AUG', tz=None)
从任意日期开始的年度索引
要从任意日期开始编制索引,请在该日期开始系列并使用自定义 DateOffset
对象。
例如。 pd.date_range(start=pd.datetime(2000, 9, 10), periods=4, freq=pd.DateOffset(years=1))
returns
DatetimeIndex(['2000-09-10', '2001-09-10', '2002-09-10', '2003-09-10'], dtype='datetime64[ns]', freq='<DateOffset: kwds={'years': 1}>', tz=None)
有了所有这些技巧,就有了一个明确的方法:
pd.date_range(start=datetime.datetime.now(),periods=5,freq='A')
A
:每年一次。
365D
?真的吗? leap years 呢?
使用 pandas.date_range(startdate, periods=n, freq=f)
函数,您可以创建一系列 pandas Timestamp
对象,其中 freq
可选参数表示频率(秒、分、时、日...) 范围中。
documentation 没有提到预期传入的文字,但几分钟后您可以轻松找到其中的大部分内容。
- 's' : 第二
- 'min' : 分钟
- 'H' : 小时
- 'D' : 天
- 'w' : 周
- 'm' : 月
但是,none of 'y'、'Y'、'yr' 等创建以年为频率的日期。 有谁知道要传递什么,或者是否有可能?
您可以使用频率字符串的倍数。例如:
pd.date_range('01/01/2010',periods=10,freq='365D')
此代码将为您提供包含 01/01/2010、01/01/2011 等的系列,我认为这正是您要查找的内容。当然,这里的问题是你会 运行 遇到闰年的问题。
您可以使用月份,然后每 12 个月选择一次:
months=pandas.date_range(start=datetime.datetime.now(),periods=120,freq='M')
year=[months[11*i] for i in range(12)]
您还可以这样做:
usingDays=pandas.date_range(start=datetime.datetime.now(),periods=10,freq='365D')
但这在闰年时效果不佳。
年度索引到年初或年底
年末频率 freq='A'
,年初频率 'AS'
。检查 aliases in the documentation.
例如。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=4, freq='A')
returns
DatetimeIndex(['2000-12-31', '2001-12-31', '2002-12-31', '2003-12-31'], dtype='datetime64[ns]', freq='A-DEC', tz=None)
到任意月份开始的年度索引
如果您需要从特定时间开始每年一次,请使用 anchored offset,
例如。 pd.date_range(start=pd.datetime(2000, 1, 1), periods=10, freq='AS-AUG')
returns
DatetimeIndex(['2000-08-01', '2001-08-01', '2002-08-01', '2003-08-01'], dtype='datetime64[ns]', freq='AS-AUG', tz=None)
从任意日期开始的年度索引
要从任意日期开始编制索引,请在该日期开始系列并使用自定义 DateOffset
对象。
例如。 pd.date_range(start=pd.datetime(2000, 9, 10), periods=4, freq=pd.DateOffset(years=1))
returns
DatetimeIndex(['2000-09-10', '2001-09-10', '2002-09-10', '2003-09-10'], dtype='datetime64[ns]', freq='<DateOffset: kwds={'years': 1}>', tz=None)
有了所有这些技巧,就有了一个明确的方法:
pd.date_range(start=datetime.datetime.now(),periods=5,freq='A')
A
:每年一次。
365D
?真的吗? leap years 呢?