datetimeindex 之前的天数(同时使用 .loc 和 .iloc)
Posted
技术标签:
【中文标题】datetimeindex 之前的天数(同时使用 .loc 和 .iloc)【英文标题】:Amount of days before datetimeindex (using .loc and .iloc at the same time) 【发布时间】:2019-01-28 16:35:03 【问题描述】:所以手头的问题很简单,但很棘手。我有 3 个变量 startdate, enddate
和一个整数 i=250
。 df 的索引是 DateTimeIndex。问题的存在是因为我需要同时使用 .loc 和 .iloc。
我已经找到了一些方法来做到这一点。但它并没有让我觉得解决它的“完美方式”。也许有人遇到过同样的问题,并以一种很好的方式解决了它,或者也许有人可以确认这实际上是“快速”的。
我目前的解决方案:
index_startdate = list(df.index.date.astype(str)).index(startdate)
df2 = (df.loc[:enddate]).iloc[(index_startdate-250):]
我也想过这个:
df2 = pd.concat([(df.loc[:startdate]).iloc[-250:],df.loc[startdate:enddate]])
提前致谢
【问题讨论】:
【参考方案1】:对于按标签的位置,您只能使用带有减去开始日期时间的 DataFrame,loc
解决方案或带有 Index.get_loc
的 DataFrame.iloc
解决方案:
示例:
rng = pd.date_range('2017-04-03', periods=10)
df = pd.DataFrame('a': range(10), index=rng)
print (df)
a
2017-04-03 0
2017-04-04 1
2017-04-05 2
2017-04-06 3
2017-04-07 4
2017-04-08 5
2017-04-09 6
2017-04-10 7
2017-04-11 8
2017-04-12 9
startdate = '2017-04-07'
enddate = '2017-04-11'
#in real data change 2 to 250
s = pd.Timestamp(startdate) - pd.offsets.DateOffset(days=2)
df2 = df.loc[s:enddate]
print (df2)
a
2017-04-05 2
2017-04-06 3
2017-04-07 4
2017-04-08 5
2017-04-09 6
2017-04-10 7
2017-04-11 8
#in real data change 2 to 250
s = df.index.get_loc(startdate) - 2
#slicing with iloc is exclusive of its endpoint, so added 1
e = df.index.get_loc(enddate) + 1
df2 = df.iloc[s:e]
print (df2)
a
2017-04-05 2
2017-04-06 3
2017-04-07 4
2017-04-08 5
2017-04-09 6
2017-04-10 7
2017-04-11 8
【讨论】:
日期偏移不起作用,因为它是一个“交易数据集”,所以有些日子是银行假期,你当然有周末。但我也这么认为,但包含“交易日历”更乏味。现在我正在使用:df2 = pd.concat([(df.loc[:startdate]).iloc[-250:], df.loc[startdate:enddate]])
以上是关于datetimeindex 之前的天数(同时使用 .loc 和 .iloc)的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pd.DatetimeIndex函数将字符串日期列表数据转化为时间索引数据DatetimeIndex
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
pandas使用pd.DatetimeIndex函数将混合格式的日期数据(包含字符串datetime对象pd.Timestamp)数据转化为时间索引数据DatetimeIndex