我试图将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
答案 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