使用pandas按日期对数据进行分组

use*_*976 4 python dataframe python-2.7 pandas

如何使用pandas按月将以下数据分组:

17/1/2001   800
7/1/2001    1300
2/1/2001    400
1/1/2001    200
25/3/2001   1800
8/3/2001    1300
Run Code Online (Sandbox Code Playgroud)

然后在月份的第一天和最后一天以及相应的第一个和最后一个值具有以下输出:

First   Last    First   Last
1/1/2001 17/1/2001  200 800
8/3/2001 25/3/2001  1300 1800
Run Code Online (Sandbox Code Playgroud)

谢谢

Max*_*axU 5

试试这个:

In [102]: res = df.sort_values('date').groupby(df.date.dt.month).agg(['first','last'])

In [104]: res.columns = ['date_first', 'date_last', 'first', 'last']

In [105]: res
Out[105]:
     date_first  date_last  first  last
date
1    2001-01-01 2001-01-17    200   800
3    2001-03-08 2001-03-25   1300  1800
Run Code Online (Sandbox Code Playgroud)

或者min,max取决于你想要的:

In [95]: res = df.groupby(df.date.dt.month).agg(['min','max'])

In [96]: res.columns = ['date_min', 'date_max', 'min', 'max']

In [97]: res
Out[97]:
       date_min   date_max   min   max
date
1    2001-01-01 2001-01-17   200  1300
3    2001-03-08 2001-03-25  1300  1800
Run Code Online (Sandbox Code Playgroud)