这是我正在处理的数据框。定义了两个工资期:
每个月的前15天和后15天。
date employee_id hours_worked id job_group report_id
0 2016-11-14 2 7.50 385 B 43
1 2016-11-15 2 4.00 386 B 43
2 2016-11-30 2 4.00 387 B 43
3 2016-11-01 3 11.50 388 A 43
4 2016-11-15 3 6.00 389 A 43
5 2016-11-16 3 3.00 390 A 43
6 2016-11-30 3 6.00 391 A 43
我需要按员工ID和job_group分组,但同时
我必须达到该分组行的日期范围。
那意味着
例如,分组结果类似于雇员ID 1的以下结果:
预期产量:
date employee_id hours_worked job_group report_id
1 2016-11-15 2 11.50 B 43
2 2016-11-30 2 4.00 B 43
4 2016-11-15 3 17.50 A 43
5 2016-11-16 3 9.00 A 43
使用pandas dataframe groupby是否可能?
请帮忙谢谢。让我知道问题是否还不清楚。
最佳答案
将SM
与Grouper
一起使用,最后添加SemiMonthEnd
:
df['date'] = pd.to_datetime(df['date'])
d = {'hours_worked':'sum','report_id':'first'}
df = (df.groupby(['employee_id','job_group',pd.Grouper(freq='SM',key='date', closed='right')])
.agg(d)
.reset_index())
df['date'] = df['date'] + pd.offsets.SemiMonthEnd(1)
print (df)
employee_id job_group date hours_worked report_id
0 2 B 2016-11-15 11.5 43
1 2 B 2016-11-30 4.0 43
2 3 A 2016-11-15 17.5 43
3 3 A 2016-11-30 9.0 43
关于python - Pandas 数据框Groupby和检索日期范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53007338/