我需要在熊猫中执行复杂的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
进行分组?
答案 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')