2017-03-31 22 views
-1

一年中的哪一天最大值我有以下數據幀計算超過一定期限

my_index = ['2005-03-20', '2008-03-20', '2014-03-20', '2007-08-15', '2012-08-15', '2007-12-31', '2011-12-31', '2013-12-31', '2014-12-31'] 
df = pd.DataFrame([42, 51, 36, 217, 228, -56, -50, -66, -32], index = my_index, columns = ['Temperature']) 
df.index = pd.to_datetime(df.index) 

,看起來像這樣:

  Temperature 
2005-03-20   42 
2008-03-20   51 
2014-03-20   36 
2007-08-15   217 
2012-08-15   228 
2007-12-31   -56 
2011-12-31   -50 
2013-12-31   -66 
2014-12-31   -32 

我想是計算2005-2014年全年最大值。該所需的輸出將是這樣一個:

 Temperature 
03-20   51 
08-15   228 
12-31   -32 

任何想法?謝謝。

回答

3

您可以使用Seriesgroupbystrftime創建:

print (df.groupby(df.index.strftime('%m-%d')).max()) 
     Temperature 
03-20   51 
08-15   228 
12-31   -32 

對於過濾使用boolean indexingnumpy.in1d創建mask,因爲year回報numpy array太:

mask = np.in1d(df.index.year, np.arange(2005, 2015)) 
print (df[mask].groupby(df.index.strftime('%m-%d')).max()) 
     Temperature 
03-20   51 
08-15   228 
12-31   -32 
+0

太好了!謝謝 –