1
采取正态分布术语的下列数据帧用小漂移:索引&施加FUNC到大熊猫数据帧与DateOffset
np.random.seed(123)
df = pd.DataFrame(np.random.randn(60,3)/100 + 0.005,
index=pd.date_range(end='2017-06-30', periods=60, freq='M'))
和定义一个函数rollup
将被施加到列:
def rollup(r):
return r.add(1.).prod() -1.
例如,号召整个df
给我:
print(rollup(df))
0 0.17411
1 0.35658
2 0.24944
dtype: float64
但是我想要做的是从df
索引中的最后日期开始计算日期偏移量,并将rollup
应用于该子帧。我正确地做到了这一点,如下所示,但是想知道是否有另外一种方法使用更少的线。
from pandas.tseries.offsets import DateOffset
end = df.index[-1]
start = end - DateOffset(years=2)
print(df[start:end].apply(rollup))
0 0.07905
1 0.18037
2 0.09656
dtype: float64
# example 2
start = end - DateOffset(months=6)
print(df[start:end].apply(rollup))
0 0.01656
1 0.06585
2 0.01463
dtype: float64
这段最后一段代码能被压缩吗? Time Series/Date functionality内是否有另一种方法,不需要我指定end
,应用DateOffset
,然后在两者之间索引df
?
如果这是需要最少代码的最直接的方法,那对我来说本身就是一个答案。
谢谢。我实际上选择使用特定的[DateOffset'](https://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects)对象,而不是通用的'DateOffset'。并且可能会保持代码原样,因为我有时使用不同的频率。 –
足够公平......正如我所说,你的代码看起来很好,开始于:-) – piRSquared