我有以下数据:
Adj Close year
Date month day
1989-01-03 1 3 1.164242 1989
1989-01-04 1 4 1.211100 1989
1989-01-05 1 5 1.218310 1989
1989-01-06 1 6 1.229123 1989
1989-01-09 1 9 1.239936 1989
... ... ...
2007-01-25 1 25 10.753074 2007
2007-01-26 1 26 10.644608 2007
2007-01-29 1 29 10.714428 2007
2007-01-30 1 30 10.665804 2007
2007-01-31 1 31 10.688246 2007
有三个索引,但是我想迭代一个月和一天的两个索引值。我想查找并存储类似这样的数据:
第1个月在Adj Close上找到第1天的.mean()
应该在第1到第12个月的所有天中进行此操作。
我该怎么做?
答案 0 :(得分:1)
IIUC,
这里有5年的虚拟数据,并进行了调整以适合您的输入数据框:
df = pd.DataFrame({'Adj Close':np.random.randint(20,100, 365*5+1)}, index=pd.date_range('2011-01-01', periods=365*5+1))
df = df.set_index([df.index.month, df.index.day], append=True).rename_axis(['Date','month','day'])\
.assign(year=df.index.year)
使用groupby
一年可以返回366天(一年有leap日)
df.groupby(['month','day'])['Adj Close'].mean()
输出:
month day
1 1 56.6
2 53.8
3 48.0
4 53.6
5 70.4
...
12 27 67.2
28 48.2
29 74.6
30 61.0
31 66.2
Name: Adj Close, Length: 366, dtype: float64