我正在尝试按医院工作人员每月工作时间分组。我每天都有原始数据,如下所示。
date hourse_spent emp_id
9/11/2016 8 1
15/11/2016 8 1
22/11/2016 8 2
23/11/2016 8 1
Run Code Online (Sandbox Code Playgroud)
我想分组的方式是。
cycle hourse_spent emp_id
1/11/2016-15/11/2016 16 1
16/11/2016-31/11/2016 8 2
16/11/2016-31/11/2016 8 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试对熊猫中的石斑鱼和频率做同样的事情,如下所示。
data.set_index('date',inplace=True)
print data.head()
dt = data.groupby(['emp_id', pd.Grouper(key='date', freq='MS')])['hours_spent'].sum().reset_index().sort_values('date')
#df.resample('10d').mean().interpolate(method='linear',axis=0)
print dt.resample('SMS').sum()
Run Code Online (Sandbox Code Playgroud)
我也试过 resampling
df1 = dt.resample('MS', loffset=pd.Timedelta(15, 'd')).sum()
data.set_index('date',inplace=True)
df1 = data.resample('MS', loffset=pd.Timedelta(15, 'd')).sum()
Run Code Online (Sandbox Code Playgroud)
但这提供了 15 天间隔的数据,而不是 1 到 15 和 15 到 31。
请让我知道我在这里做错了什么。
你就快到了。这样就可以了——
dt = df.groupby(['emp_id', pd.Grouper(key='date', freq='SM')])['hours_spent'].sum().reset_index().sort_values('date')
emp_id date hours_spent
1 2016-10-31 8
1 2016-11-15 16
2 2016-11-15 8
Run Code Online (Sandbox Code Playgroud)
这freq='SM'是半月的概念,它将使用15th每个月的 和 最后一天