2017-04-26 209 views
-1

我有df列日期,员工和事件。如果某人退出,那么'事件'有价值[1,3,5];如果有人加入,则'[0,2,4]有价值。 '员工'是每个员工的私人号码。这是一个df的头:大熊猫的总时间

employee event registration    date 
0   4  1    1 2010-10-18 18:11:00 
1  17  1    1 2010-10-18 18:15:00 
2   6  0    1 2010-10-19 06:28:00 
3   8  0    0 2010-10-19 07:04:00 
4  15  0    1 2010-10-19 07:34:00 

我排序的DF和我有一个月的值[年和月是我的变量]。

df = df.where(df['date'].dt.year == year).dropna() 
df = df.where(df['date'].dt.month== month).dropna() 

我想创建DF这说明我的工作和时间为每个员工。 员工在同一天进来出来,每天都可以做几次。

回答

0

看来你需要boolean indexinggroupby从哪里得到的diff差异与sum

year = 2010 
month = 10 

df = df[(df['date'].dt.year == year) & (df['date'].dt.month== month)] 

更普遍的解决方案是增加groupbyyearmonth

df =df['date'].groupby([df['employee'], 
         df['event'], 
         df['date'].rename('year').dt.year, 
         df['date'].rename('month').dt.month]).apply(lambda x: x.diff().sum()) 
+0

是的,我需要GROUPBY,但不由df ['event']。事件0意味着进来,事件1意味着出来。但经过小小的改变后,它的工作正常。 –