如何遍历多索引行?

时间:2019-11-04 01:37:48

标签: python-3.x pandas pandas-groupby multi-index

我有以下数据:

                     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个月的所有天中进行此操作。

我该怎么做?

1 个答案:

答案 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