熊猫自定义日期间隔/频率

时间:2015-07-09 02:41:00

标签: python pandas

我试图将Pandas系列转换为句点索引。我已经发现了几个有用的时间间隔(每季度,每年一次),但是我想对此进行扩展,并且每年有2年和5年的时间间隔。

to_period方法提供字符串,例如'2Y''5Y'会引发ValueError('Only mult == 1 supported')

period_width = 'Q' # 'Y'
df['period'] = df['date'].dt.to_period(period_width)

如何创建自定义间隔?

更新

结果的行为应与to_period()相同。

In [2]:

import datetime
import pandas as pd
​
df = pd.DataFrame({
        'date': [
            datetime.datetime(2010, 2, 2), 
            datetime.datetime(2010, 2, 5), 
            datetime.datetime(2011, 2, 2), 
            datetime.datetime(2012, 3, 5)
        ]
    })
period_width = 'Y'
df['period'] = df['date'].dt.to_period(period_width)
df
Out[2]:
date    period
0   2010-02-02  2010
1   2010-02-05  2010
2   2011-02-02  2011
3   2012-03-05  2012
In [3]:

df.dtypes
Out[3]:
date      datetime64[ns]
period            object
dtype: object

1 个答案:

答案 0 :(得分:0)

好吧,要创建5年的差距,您可以使用datetime模块。

从2000年开始创建1年1月的5年间隔看起来像这样:

import pandas as pd
import datetime as datetime

five_y = pd.Series([datetime.datetime(Year, 1, 1).date() for Year in xrange(2000, 2100, 5)])

In [2]: five_y
Out[2]: 
0     2000-01-01
1     2005-01-01
2     2010-01-01
3     2015-01-01
4     2020-01-01
5     2025-01-01
6     2030-01-01
7     2035-01-01
8     2040-01-01
9     2045-01-01
10    2050-01-01
11    2055-01-01
12    2060-01-01
13    2065-01-01
14    2070-01-01
15    2075-01-01
16    2080-01-01
17    2085-01-01
18    2090-01-01
19    2095-01-01
dtype: object