按月和日期分组 - python

时间:2018-01-20 13:04:25

标签: python pandas

我有一组数据点,如下所示。我每年的每一天都有类似的数据点

EVP_aes_256_cbc

如何按月份和日期进行分组并获取最小值和最大值?我需要在2个独立的数据帧中得到结果,一个用于最小值,一个用于最大值。结果数据框应具有如下输出

data1 = {'Date': {1: '01-01-2001',
  2: '01-01-2002',
  3: '01-01-2003',
  4: '01-01-2004',
  5: '01-01-2005',
  6: '01-01-2006',
  7: '01-01-2007',
  8: '01-01-2008',
  9: '01-01-2009',
 10: '01-01-2010'
   },
 'milesrun': {1: '15',
  2: '21',
  3: '19',
  4: '22',
  5: '16',
  6: '13',
  7: '22',
  8: '24',
  9: '17',
 10: '18'}}

我能够将月份和日期提取为单独的列,但无法正确分组。我试图避免使用numpy并查看是否有替代选项

1 个答案:

答案 0 :(得分:1)

使用dt.strftimemonth提取为days,然后将groupby与汇总minmax一起使用:

#if neccessary convert to datetimes if MM-DD-YYYY
#df['Date'] = pd.to_datetime(df['Date'])

dfboth = df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d')).agg(['min','max'])
print (dfboth)
      min max
Date         
01-01  13  24

或者:

dfmin = df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d')).min()
dfmax = df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d')).max()