将n个月添加到 pandas Period 对象中?

6

这似乎应该很容易,但我在谷歌上搜索时找不到答案。假设我有一个变量k,类型为pandas.Period,并且其值为:

Period('2018-11', 'M')

我该如何将n个月添加到这个变量中?例如,如果n为3,我想让k为:
Period('2019-02', 'M')

我尝试了以下方法:

k.month = k.month + 12

但是这会失败,显示如下内容:
AttributeError: attribute 'month' of 'pandas._libs.tslibs.period._Period' objects is not writable
2个回答

6
添加一个 pd.offsets.MonthEnd 对象:
pd.Period('2018-11', 'M') + pd.offsets.MonthEnd(3)

from pandas.tseries.frequencies import to_offset then p + 3*to_offset('M') - It_is_Chris
我认为你的答案是错误的,输出应该是 2019-02 - jezrael
问题是 print (pd.Timedelta(3, unit='M')) 91天7小时27分18秒 - jezrael
@jezrael 好的,我猜可能有更好的方法,而且我是对的,你的方法肯定更简单。我已经点赞了! - cs95
1
@jezrael 啊哈,原来是一个“偏移量”对象。感谢您的编辑 :) - cs95
显示剩余3条评论

5
因为您要将月份添加到月份周期中,所以只需使用+:
k = pd.Period('2018-11', 'M')
print (k)
2018-11

k1 = k + 3
print (k1)
2019-02

k2 = k + 12
print (k2)
2019-11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接