按月份和日期分组-python

按月份和日期分组-python,python,pandas,Python,Pandas,我有一组数据点,如下所示。我每年每天都有类似的数据点 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':

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

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'}}
如何仅按月份和日期分组,并获得最小值和最大值?我需要在两个单独的数据帧中得到结果,一个用于最小值,一个用于最大值。结果数据帧的输出应如下所示

mth-date  value
 01-01     13
 01-02     14
 01-03     13
 ............
 ............
 12-29     18
 12-30     16
 12-31     17
我能够将月份和日期提取为单独的列,但无法正确地分组。我试图避免使用numpy,并查看是否有其他选项

用于提取
s和
,然后使用
分组方式
和聚合
最小值
最大值

#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
或:


您的日期格式是第一天还是第一个月?我想这些是
dayfirst=True
日期。@cᴏʟᴅsᴘᴇᴇᴅ 我应该想出一个更好的日期样本。最初的假设是正确的。这是MM-DD-YYYY。@jezrael出于好奇,如果数据集中有多个列,并且必须使用该列进行筛选,您将如何进行筛选?例如,假设我将城市作为一个附加列,并且必须将其限制为一个城市,例如纽约?@rajeev-然后需要聚合每个列,因此instad
dfmin=df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d').min()
need
dfmin=df.groupby(df['Date'].dt.strftime('%m-%d')).agg({'milesrun':'min','city':'first'))
@jezrael为了重新表述我的问题,我实际上是想添加一个过滤条件,比如city='newyork',只得到'newyork'的结果。上面的解决方案将按城市进行汇总,对吗?
dfmin = df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d')).min()
dfmax = df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d')).max()