基于多指标打破现有数据框架

时间:2015-10-30 21:02:49

标签: python pandas dataframe

我有一个现有的数据框,其排序如下:

In [3]: result_GB_daily_average
Out[3]:
                NREL      Avert
Month Day
1     1    14.718417  37.250000
      2    40.381167  45.250000
      3    42.512646  40.666667
      4    12.166896  31.583333
      5    14.583208  50.416667
      6    34.238000  45.333333
      7    45.581229  29.125000
      8    60.548479  27.916667
      9    48.061583  34.041667
      10   20.606958  37.583333
      11    5.418833  70.833333
      12   51.261375  43.208333
      13   21.796771  42.541667
      14   27.118979  41.958333
      15    8.230542  43.625000
      16   14.233958  48.708333
      17   28.345875  51.125000
      18   43.896375  55.500000
      19   95.800542  44.500000
      20   53.763104  39.958333
      21   26.171437  50.958333
      22   20.372688  66.916667
      23   20.594042  42.541667
      24   16.889083  48.083333
      25   16.416479  42.125000
      26   28.459625  40.125000
      27    1.055229  49.833333
      28   36.798792  42.791667
      29   27.260083  47.041667
      30   23.584917  55.750000
...              ...        ...
12    2    34.491604  55.916667
      3    26.444333  53.458333
      4    15.088333  45.000000
      5    10.213500  32.083333
      6    19.087688  17.000000
      7    23.078292  17.375000
      8    41.523667  29.458333
      9    17.173854  37.833333
      10   11.488687  52.541667
      11   15.203479  30.000000
      12    8.390917  37.666667
      13   70.067062  23.458333
      14   24.281729  25.583333
      15   31.826104  33.458333
      16    5.085271  42.916667
      17    3.778229  46.916667
      18   31.276958  57.625000
      19    7.399458  46.916667
      20   18.531958  39.291667
      21   26.831937  35.958333
      22   55.514000  32.375000
      23   24.018875  34.041667
      24   54.454125  43.083333
      25   57.379812  25.250000
      26   94.520833  33.958333
      27   49.693854  27.500000
      28    2.406438  46.916667
      29    7.133833  53.916667
      30    7.829167  51.500000
      31    5.584646  55.791667

我想将这个数据框分成12个不同的数据框,每个月一个,但问题是它们的长度略有不同,因为一个月的天数变化,这意味着尝试使用np.array_split失败了。如何根据Month索引拆分?

1 个答案:

答案 0 :(得分:2)

One solution :

df=result_GB_daily_average 
[df.iloc[df.index.get_level_values('Month')==i+1] for i in range(12)] 

or, shorter:

[df.ix[i] for i in range(12)]