我有以下数据框:
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
有什么想法吗? THX。
答案 0 :(得分:3)
您可以使用strftime
创建的groupby
{/ 1}}:
Series
要过滤boolean indexing
与numpy.in1d
创建的print (df.groupby(df.index.strftime('%m-%d')).max())
Temperature
03-20 51
08-15 228
12-31 -32
,因为year
也会返回mask
:
numpy array