按月份和日期分组-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-然后需要聚合每个列,因此instaddfmin=df['milesrun'].groupby(df['Date'].dt.strftime('%m-%d').min()
needdfmin=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()