2014-09-06 4 views
0

간헐적 인 NaT 값이 포함 된 DataFrame에 groupby.median() 및 groupby.mean()을 사용하는 데 문제가 있습니다. 특히, 다른 열을 기반으로 다양한 시간 차이를 계산하는 데이터 집합의 여러 열이 있습니다.Python Pandas Groupby 날짜 시간 열 삭제

Group Category Start Time  End Time  Time Diff 
    A   1  08:00:00.000 08:00:00.500  .500 
    B   1  09:00:00.000 09:02:00.000 2:00.000 
    B   1  09:00:00.000  NaT   NaT 
    A   2  09:00:00.000 09:02:00.000 2:00.000 
    A   2  09:00:00.000 09:01:00.000 1:00.000 
    A   2  08:00:00.000 08:00:01.500  1.500 

내가 df.groupby(['Group', 'Category'].median() 또는 .mean() NAT가 포함 된 열을 실행할 때마다이 결과 집합에서 삭제 : 경우에 따라 시간 차이는 아래의 예와 유사한 NAT 값을 일으키는 원인이 존재하지 않는다. 나는 fillna을 시도했지만 NaT는 남아있는 것처럼 보였습니다. 문맥의 추가 점으로,이 스크립트는 이전 버전의 Anaconda Python (1.x)에서 올바르게 작동했습니다. 나는 최근에 내 업무용 컴퓨터를 2.0.1로 업그레이드 할 수 있었는데,이 시점에서이 문제는 시작되었습니다.

EDIT : NaT가 위 요소에 해당한다고 생각하고 있지만 더 검토하면 문제가 실제로 이러한 열이 timedelta64라는 사실에 놓여있는 것 같습니다. 누구 timereeltas에 평균/중간 값을 얻을 수있는 해결 방법을 알고 있습니까?

많은 통찰력을 가져 주셔서 감사합니다.

+0

어떤 판다의 버전이 있습니까? – joris

+0

@joris 팬더가 0.14.0입니다. 해결 방법을 찾았습니다. 아래에서 제 응답을보십시오. – wrcobb

답변

0

Google 검색 및 실험을 한 후이 항목이 timedelta64 인 열과 관련이있는 것으로 확인되었습니다.

df['End Time'] = df['End Time'].astype('timedelta64[ms]')/86400000

이에 더 우아한 해결책이있을 수 있지만, 이것은 내 분석과 앞으로 나아갈 수 :이 컬럼에 pd.groupby을 수행하기 위해 내가 처음과 같이 수레로 변환됩니다.

감사합니다.

+1

이것은 실제로 팬더의 현재 한계입니다.이 문제를 해결하려면 https://github.com/pydata/pandas/pull/6884가 필요합니다. 잘하면 버전 0.15에 들어갑니다 – joris

+0

@joris 전달 해 주셔서 감사합니다. 링크를 따라 나는이 문제에 계속 주목할 것이다. 매우 감사 – wrcobb