【发布时间】:2016-01-21 18:43:09
【问题描述】:
我需要在 pandas 中执行一个复杂的 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 分组?
【问题讨论】:
-
IIUC 您可以将日期时间转换为期间-
df['MATCH_DATE'] = df['MATCH_DATE'].dt.to_period('M')`
标签: python python-2.7 pandas dataframe