2014-06-08 3 views
0

나는 (내가 read_csv('fileA.csv', parse_dates=['ProcessA_Timestamp'])를 사용하여로드)팬더 : 한 열에서 값을 기준으로 계산 된 열

Item ProcessA_Timestamp 
'A' 2014-06-08 03:32:20 
'B' 2014-06-08 03:32:20 
'A' 2014-06-08 03:33:19 
'C' 2014-06-08 03:33:20 
'B' 2014-06-08 03:33:40 
'D' 2014-06-08 03:38:20

내가 될 것이라고, ProcessA_ProcessingTime라는 열을 만드는 방법에 대해 갈 것이라고 어떻게 csv 파일이 같은 열이 사이의 시간 차이 시간 테이블에서 항목 -첫 번째 시간이 발생합니다.

마찬가지로 다른 데이터 프레임도 있습니다. 하나의 데이터 프레임에 병합해야하는지 잘 모르겠습니다. 그 자체가 Process*_Timestamp입니다.

마지막으로, 나는 데이터가 같은이고, 테이블을 만들어야합니다

Item ProcessA_ProcessingTime ProcessB_ProcessingTime ... ProcessX_ProcessingTime 
'A'     00:00:59     ... 
'B'     00:01:21 
'C'   NOT FINISHED YET 
'D'   NOT FINISHED YET 
+0

'groupby'에 익숙합니까? – DSM

+0

죄송합니다, 여기 n00b. 그것에 대해 읽을 것입니다 .. ty –

+0

두 개의 열, 열의 이름을 저장하는'Process' 열과 열을 저장하는'ProcessingTime' 열을 만듭니다. 그러면'df.groupby ([ 'Item', 'Process'])'를 할 수 있습니다. – U2EF1

답변

1

당신은 콤보를 적용합니다 GROUPBY 팬더를 사용할 수 있습니다. 데이터 프레임을 "항목"별로 그룹화하고 프로세스 시간을 계산하는 함수를 적용하십시오. 다음과 같이 :

import pandas as pd 

def calc_process_time(row): 
    ts = row["ProcessA_Timestamp].values 
    if len(ts) == 1: 
     return pd.NaT 
    else: 
     return ts[-1] - ts[0] #last time - first time 

df.groupby("Item").apply(calc_process_time) 
+0

당신이 내 질문에 정확하게 대답했음을 알고 있습니다 만, 데이터 유형 일관성을 위해서''NOT FINISHED YET ''을'NaN '으로 대체해야한다고 생각합니까? –

+0

아니요,'pd.NaT' (시간이 아닌)로 대체되거나 단순히 데이터에서 제외되어야합니다. 'df.groupby ('Item'). diff()'는 이미 이것을 수행합니다. – U2EF1

+0

@LelouchLamperouge : 편집 됨. –

관련 문제