每n年对pandas数据帧中的数据进行分组

时间:2017-06-24 02:29:27

标签: python pandas pandas-groupby

我在数据框中按年份分组数据。我有一个列,其中包含这一年的每一年的各列中的数据。是否可以每五年对数据进行分组?

Year Column 
1991   2
1992   3
1993   5
1994   7
1995   8
1996   9
1997   7

我需要将这些数据从1991年至1995年分组为一个,并将1996 - 1997年的数据分组为一个,并取值的均值。如何通过操作执行此组?

4 个答案:

答案 0 :(得分:4)

如果标签无关紧要,可以随时将其转换为更有意义的值,例如1991-1995,则可以执行以下操作:

df.Column.groupby(df.Year.sub(1991)//5).mean()

#Year
#0    5
#1    8
#Name: Column, dtype: int64

答案 1 :(得分:4)

只需使用df.groupby(df.index//5).mean()

In [21]: df
Out[21]: 
   Year  Column
0  1991       2
1  1992       3
2  1993       5
3  1994       7
4  1995       8
5  1996       9
6  1997       7

In [22]: df.groupby(df.index//5).mean()
Out[22]: 
   Column
0       5
1       8

答案 2 :(得分:0)

你可以在这里使用剪切功能:

your_data_frame.groupby(pd.cut(your_data_frame["Year"], np.arange(0, 1991, 1995)))

答案 3 :(得分:0)

您可以groupby使用numpy.arange,使用agg - meanfirst和{{1} }。

lastinsert新列中的MultiIndex删除到astype的第一个位置,最后按drop删除列:

map