这是我正在处理的数据框。定义了两个工资期:
每个月的前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是否可能?
请帮忙谢谢。让我知道问题是否还不清楚。

最佳答案

SMGrouper一起使用,最后添加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/

10-12 16:53