Pandas DataFrame 日期索引的偏移日期
Posted
技术标签:
【中文标题】Pandas DataFrame 日期索引的偏移日期【英文标题】:Offset date for a Pandas DataFrame date index 【发布时间】:2013-11-18 04:10:36 【问题描述】:给定一个如下创建的 Pandas 数据框:
dates = pd.date_range('20130101',periods=6)
df = pd.DataFrame(np.random.randn(6),index=dates,columns=list('A'))
A
2013-01-01 0.847528
2013-01-02 0.204139
2013-01-03 0.888526
2013-01-04 0.769775
2013-01-05 0.175165
2013-01-06 -1.564826
我想将 15 天添加到索引中。 这不起作用>
#from pandas.tseries.offsets import *
df.index+relativedelta(days=15)
#df.index + DateOffset(days=5)
TypeError: relativedelta(days=+15)
我似乎无法正确处理索引......
【问题讨论】:
【参考方案1】:你可以使用DateOffset:
>>> df = pd.DataFrame(np.random.randn(6),index=dates,columns=list('A'))
>>> df.index = df.index + pd.DateOffset(days=15)
>>> df
A
2013-01-16 0.015282
2013-01-17 1.214255
2013-01-18 1.023534
2013-01-19 1.355001
2013-01-20 1.289749
2013-01-21 1.484291
【讨论】:
非常感谢!看来我没有意识到需要在 DateOffset 之前加上 pd。 我正在寻找相同问题的解决方案,并且效果很好。谢谢! @dartdog 是否必须使用前缀pd.
取决于您导入功能的方式。如果你写了from pandas import DateOffset
,那么你可以(并且必须)写DateOffset
。如果你是import pandas
,那么它就是pandas.DateOffset
。【参考方案2】:
略短/更直接的是tshift
:
df = df.tshift(15, freq='D')
Link to a list of freq aliases
【讨论】:
上面的链接好像坏了,也许链接到这个? pandas.pydata.org/pandas-docs/stable/… 谢谢@fixxxer,这是一个略有不同的链接,但我已经更新了链接。 更新链接:pandas.pydata.org/pandas-docs/stable/user_guide/…【参考方案3】:如果需要将其转换为DatetimeIndex
并添加使用天数:
df.index = pd.to_datetime(df.index) + pd.Timedelta('15 days')
如果已经DatetimeIndex
:
df.index += pd.Timedelta('15 days')
【讨论】:
以上是关于Pandas DataFrame 日期索引的偏移日期的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用datetime创建示例dataframe:包含完整的时分秒信息创建时间索引使用不同的时间频率date_range中参数freq的偏移量别名
Pandas:在两个日期之间选择 DataFrame 行(日期时间索引)
Pandas Dataframe .loc + 更新非唯一日期时间索引?
遍历 Pandas Dataframe 中定义的日期时间索引范围
pandas使用query函数查询指定日期索引对应的dataframe数据行(select rows using a single date in dataframe)