python / pandas仅从数据帧索引中拉出一个月

时间:2018-07-06 14:07:06

标签: python pandas dataframe

目前,我有一个如下所示的数据框:

df = 

            Portfolio Value  Reference Values
Date                                         
2017-12-08     1.116178e+06      1.131236e+06
2017-12-15     1.117073e+06      1.139133e+06
2017-12-22     1.132547e+06      1.148579e+06
2017-12-29     1.138442e+06      1.147916e+06
2018-01-05     1.164225e+06      1.176083e+06
2018-01-12     1.187353e+06      1.196030e+06
2018-01-19     1.189111e+06      1.201825e+06
2018-01-26     1.206821e+06      1.225157e+06
2018-02-02     1.158117e+06      1.176250e+06
2018-02-09     1.100856e+06      1.115643e+06
2018-02-16     1.147286e+06      1.161896e+06
2018-02-23     1.150850e+06      1.169671e+06
2018-03-02     1.131918e+06      1.142618e+06
2018-03-09     1.176213e+06      1.183319e+06
2018-03-16     1.169246e+06      1.168313e+06
2018-03-23     1.115895e+06      1.107276e+06
2018-03-30     1.142702e+06      1.129814e+06
2018-04-06     1.131622e+06      1.115807e+06
2018-04-13     1.155948e+06      1.140644e+06
2018-04-20     1.167440e+06      1.151066e+06
2018-04-27     1.161850e+06      1.147982e+06
2018-05-04     1.156383e+06      1.146540e+06
2018-05-11     1.188791e+06      1.175786e+06

我想从数据框中获取包含每周数据的月份列表,但不要重复同一个月。例如,现在在数据框第12个月的开始出现了四次,但是在我的列表中,我希望它只出现一次。该声明适用于所有月份。

我希望最终结果看起来像这样:

monthList = [12, 1, 2, 3, 4, 5] 

我的实际数据帧会有很多年,开始月和结束月不等,所以我希望最终结果看起来像这样:

monthList = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5] #etc...

monthList应该从数据框中的月份开始,到数据框结束的月份结束。

1 个答案:

答案 0 :(得分:4)

使用unique

df.index.month.unique().tolist()
Out[99]: [12, 1, 2, 3, 4, 5]

多年

pd.Series(df.index.month).groupby(df.index.year).unique()
Out[105]: 
Date
2017               [12]
2018    [1, 2, 3, 4, 5]
Name: Date, dtype: object