2017-12-18 8 views
1

다음 샘플 데이터가 있습니다. 나는 각각의 고유 id에 대해 보유 시간을 계산하고 싶습니다.이 id에 대한 두 개의 시간 소인의 차이는 없습니다.다른 컬럼을 기반으로 한 두 스탬프의 차이를 계산하십시오.

예를 들어 id1의 경우 (20171116 03 : 46 : 17.467893 - 20171116 03 : 46 : 16.142514), id2의 경우 (20171116 03 : 46 : 17.212341 - 20171116 03 : 46 : 16.243121) 등이 있습니다.

    DATETIME INSTR MODE TYPE id 
0 20171116 03:46:16.142514 INSTR1 ORD New 1 
4 20171116 03:46:17.467893 INSTR1 ORD CXL 1 
1 20171116 03:46:16.243121 INSTR2 ORD New 2 
3 20171116 03:46:17.212341 INSTR2 ORD TRD 2 
2 20171116 03:46:16.758292 INSTR3 ORD New 3 
5 20171116 03:46:18.924825 INSTR3 ORD TRD 3 

누군가 나를 도울 수 있습니까?

답변

1

먼저 변환 열 DATETIMEto_datetime 먼저 빼기 마지막 값을 다음 groupby :

g = df.groupby('id')['DATETIME'] 
df = (g.last() - g.first()).reset_index(name='timedelta') 

print (df) 

    id  timedelta 
0 1 00:00:01.325379 
1 2 00:00:00.969220 
2 3 00:00:02.166533 
: GroupBy.lastGroupBy.first에 의해

df['DATETIME'] = pd.to_datetime(df['DATETIME']) 

df = df.groupby('id')['DATETIME'] 
     .apply(lambda x: x.iat[-1] - x.iat[0]).reset_index(name='timedelta') 

또는 빼기