首页 > 解决方案 > Pandas groupby 仅在选定的行和列上

问题描述

对于以下数据框,我需要为 each 选择行2017-032017-05然后type为和type计算平均值:v2v3

  type     date  v1  v2  v3
0    a  2017-01   8  16  32
1    a  2017-02   3   6  12
2    a  2017-03   6  12  24
3    a  2017-04   6  12  24
4    a  2017-05   5  10  20
5    b  2017-01   4   8  16
6    b  2017-02   3   6  12
7    b  2017-03   5  10  20
8    b  2017-04   9  18  36
9    b  2017-05   4   8  16

切片的数据框将如下所示:

  type     date  v2  v3
0    a  2017-03  12  24
1    a  2017-04  12  24
2    a  2017-05  10  20
3    b  2017-03  10  20
4    b  2017-04  18  36
5    b  2017-05   8  16

我的预期将如下所示:

  type     v2     v3
0    a  11.33  22.67
1    b  12.00  24.00

我怎样才能做到这一点?谢谢你。

标签: pythonpandasdataframepandas-groupby

解决方案


你用文字描述了一些看起来像这样的东西:

(df.loc[df['date'].between('2017-03', '2017-05')]
   .drop(['v1'], 1) 
   .groupby('type', as_index=False)
   .mean())

  type         v2         v3
0    a  11.333333  22.666667
1    b  12.000000  24.000000

PS:“日期”不需要像日期时间列一样处理,因为可以按字典顺序比较“YYYY-MM”日期。


推荐阅读