我的数据框中有一列表示月份(格式为yyyy-mm).我想使用pd.Period将其转换为季度.
我尝试在下面的表单中使用apply函数,但它运行得太慢了.有一个更好的方法吗?
我在用 :
hp2['Qtr'] = hp2.apply(lambda x: pd.Period(x['Mth'],'Q'),axis=1)
最佳答案:
我会以“矢量化”的方式使用to_datetime()方法:
In [76]: x
Out[76]:
Month
0 2016-11
1 2011-01
2 2015-07
3 2012-09
In [77]: x['Qtr'] = pd.to_datetime(x.Month).dt.quarter
In [78]: x
Out[78]:
Month Qtr
0 2016-11 4
1 2011-01 1
2 2015-07 3
3 2012-09 3
或者如果您想使用2016Q4格式(如@root mentioned),请使用PeriodIndex():
In [114]: x['Qtr'] = pd.PeriodIndex(pd.to_datetime(x.Mth), freq='Q')
In [115]: x
Out[115]:
Mth Qtr
0 2016-11 2016Q4
1 2011-01 2011Q1
2 2015-07 2015Q3
3 2012-09 2012Q3
标签:python,pandas