大熊猫中的GroupBy除以日期范围

时间:2016-01-21 18:43:09

标签: python python-2.7 pandas dataframe

我需要在熊猫中执行复杂的groupBy并除以日期范围。

                                PROFIT   TOTAL  MATCH_HOME  PROFIT_2
LEAGUE  MATCH_DATE  MATCH_HOME              
   1    2007-06-05  (1.2, 1.6]  -20.00    1.00      1.55     21.00
   2    2007-08-10  (2.4, 2.8]   19.50    0.50      2.50    -19.00
   5    2012-04-05    (2, 2.4]   18.20    0.20      2.40    -18.00
        2014-09-05    (2, 2.4]  -14.00    1.40      2.20     15.40

我通过下一个代码得到了这个数据框:

bins = np.linspace(0, 10, 25, endpoint=False)
g1 = dfml.groupby([dfml.LEAGUE, dfml.MATCH_DATE, 
                   pd.cut(dfml.MATCH_HOME, bins)]).agg({'MATCH_HOME' : 'min',
                                                        'PROFIT': sum,
                                                        'PROFIT_2': sum,
                                                        'TOTAL': sum
                                                       })
g1[g1['TOTAL'] > 0]

如何按Month而不是Day进行分组?

1 个答案:

答案 0 :(得分:2)

也许您可以使用dt.month

bins = np.linspace(0, 10, 25, endpoint=False)
g1 = dfml.groupby([dfml.LEAGUE, dfml.MATCH_DATE.dt.month, 
                   pd.cut(dfml.MATCH_HOME, bins)]).agg({'MATCH_HOME' : 'min',
                                                        'PROFIT': sum,
                                                        'PROFIT_2': sum,
                                                        'TOTAL': sum
                                                       })
g1[g1['TOTAL'] > 0]

或者,如果您需要年月和月份,请将datetime转换为period

df['MATCH_DATE'] = df['MATCH_DATE'].dt.to_period('M')