如何用Pandas按日期汇总列的部分?

时间:2017-04-29 23:28:33

标签: python pandas jupyter-notebook

如何按日期汇总列的部分,例如在本例中,首先是2000年到2008年,然后是2009年到2016年?

    Date  Total Managed Expenditure
0   2001                      503.2
1   2002                      529.9
2   2003                      559.8
3   2004                      593.2
4   2005                      629.5
5   2006                      652.1
6   2007                      664.3
7   2008                      688.2
8   2009                      732.0
9   2010                      759.2
10  2011                      769.2
11  2012                      759.8
12  2013                      760.6
13  2014                      753.3
14  2015                      757.6
15  2016                      753.9

2 个答案:

答案 0 :(得分:4)

正如评论中所述,pandas.cut要进行分类,然后groupby

<强>代码:

df.groupby(pd.cut(df.Date, [2000, 2008, 2016]))['TME'].sum()

测试代码:

df = pd.read_fwf(StringIO(
    u"""
    Date  TME
    2001  503.2
    2002  529.9
    2003  559.8
    2004  593.2
    2005  629.5
    2006  652.1
    2007  664.3
    2008  688.2
    2009  732.0
    2010  759.2
    2011  769.2
    2012  759.8
    2013  760.6
    2014  753.3
    2015  757.6
    2016  753.9"""
), header=1)\

print(df.groupby(pd.cut(df.Date, [2000, 2008, 2016]))['TME'].sum())

<强>结果:

Date
(2000, 2008]    4820.2
(2008, 2016]    6045.6
Name: TME, dtype: float64

答案 1 :(得分:2)

斯蒂芬的答案更好。但我喜欢这个

df.groupby(df.Date.le(2008)).TME.sum()