2016-11-22 7 views
2

직원 클럭킹 및 인출 데이터 세트가 있습니다.열의 시작 시간 및 종료 시간 찾기

Employee Date Start End 
Emp1  1/1/16 06:00 13:00 
Emp2  1/1/16 09:00 17:00 
Emp3  1/1/16 11:00 18:00 

내가 그래서 데이터 프레임 형식으로 그것을 얻을 싶습니다을 :이처럼 보이도록 데이터를 얻으려면

Employee Date Time 
Emp1  1/1/16 06:00 
Emp1  1/1/16 13:00 
Emp2  1/1/16 09:00 
Emp2  1/1/16 17:00 
Emp3  1/1/16 11:00 
Emp3  1/1/16 18:00 

:이 (직원 당 두 개의 항목을주의) 것 같습니다 몇 가지 계산을 할 수 있습니다.

df.groupby(['employee','date]['time'].max() 

은 어떻게 하나에서 두 개의 열을받을 수 있나요

:

현재 나는 또한 시도

df['start'] = np.where((df['employee']==df['employee']&df['date']==df['date']),df['time'].min()) 

을 시도 I?

+0

나는 DateTime''로 하나 개의 컬럼에 Date'와'Time''을 병합 추천 할 것입니다. 그러면 작업이 크게 단순 해집니다. – burhan

+0

날짜와 시간을 병합하면 어떻게됩니까? – KeatonYoung

+0

왜 'df.groupby (['Employee ','Date ']) .ggg ([최소, 최대])'? – Zero

답변

2

날짜와 시간을 하나의 열로 병합하여 DateTime으로 병합하는 것이 좋습니다. 그러면 작업이 크게 단순 해집니다. 다음과 같이 할 수 있습니다.

df['DateTime']=pd.to_datetime(df['Date']+" "+df['Time']) 
df.groupby('Employee')['DateTime'].agg([min, max]) 

데이터 내용에 따라 다른 옵션이 있습니다. 당신은 모든 항목이 같은 날에있을 것이라는 점을 알고 있다면 당신은 간단하게 할 수 없다 :

# First convert Date and Time columns to DateTime type 
df['Date'] = pd.to_datetime(df['Date']).dt.date 
df['Time'] = pd.to_datetime(df['Time']).dt.time 
df.groupby('Employee').agg([min, max]) 

이 경우에는 날짜 시간 열을 만들 필요합니다.

각 하루를 시작 종료 시간은 당신이 할 수있는 알고 싶다면

:

# First convert Date and Time columns to DateTime type 
df['Date'] = pd.to_datetime(df['Date']).dt.date 
df['Time'] = pd.to_datetime(df['Time']).dt.time 
df.groupby(['Employee','Date'])['Time'].agg([min, max]) 
+0

나는 그것을 시도했습니다! 고맙습니다! 이제 '직원'이 모든 행에 나타나기를 바랍니다. 이 데이터 프레임을 다른 데이터 프레임으로 병합해야합니다. – KeatonYoung

+0

그게 당신이 묻는 것일 지 모르겠지만 다음을 시도하십시오 :'grouped = df.groupby ([ 'Employee', 'Date']) [ 'Time'] .ggg ([min, max])'then'grouped. reset_index()' – burhan

+0

작동하지 않았지만 좀 더 연구 할 것입니다. 나는 그것이 그룹 바이에 대한 제한일지도 모른다라고 생각한다. 내가 아무것도 못 찾으면 다른 질문을 할 것이다. 다시 감사합니다! – KeatonYoung

관련 문제