我有一个带有日期时间索引的月度观察的熊猫数据框。我想转换成年度观察。问题是我的数据框中的值是性能值(例如:每月pct。股票价格的变化)。如何在正确聚合的同时重新采样到年度值?
我需要做的例子:
m1 0.1 to q1 0.331
m2 0.1 q2 0.089
m3 0.1
m4 -0.1
m5 0.1
m6 0.1
每月至季度重新采样,1.1 ^ 3-1 = 0.331,0.9 *(1.1 ^ 2)-1 = 0.089
假设您的数据位于名为df
的数据框中,并且val
列保存整数:
(df.val + 1).groupby(df.index // 3).prod() - 1
使用feliks的答案,如果您不想更改索引,可以在分组之前应用正则表达式:
regex_pattern = lambda s: (int(re.search(r'\d+', s).group())-1)//3
d1 = (df.val + 1).groupby(regex_pattern).prod() - 1
出:
0 0.331
1 0.089
Name: val, dtype: float64