2017-04-20 16 views
3

이를 고려팬더 : between_time과 밀리 초를 함께 사용하는 방법?

import pandas as pd 
import numpy as np 

idx2=[pd.to_datetime('2016-08-31 22:08:12.000'), 
    pd.to_datetime('2016-08-31 22:08:12.200'), 
    pd.to_datetime('2016-08-31 22:08:12.400')] 

test=pd.DataFrame({'value':[1,1,3], 'groups' : ['A',np.NaN,'A']},index=idx2) 
    test 
Out[27]: 
         groups value 
2016-08-31 22:08:12.000  A  1 
2016-08-31 22:08:12.200 NaN  1 
2016-08-31 22:08:12.400  A  3 

난 단지 22:08:12.20022:08:12.400 사이에 데이터를 유지해야하는, 그래서 자연스럽게 between_time를 사용

test.between_time('22:08:12.200','22:08:12.400') 

ValueError: Cannot convert arg ['22:08:12.200'] to a time

여기에 어떤 문제가 있습니다? 밀리 초 정보로 시간을 기준으로 dataframe을 어떻게 조각 낼 수 있습니까?

답변

3

직접 문자열이 작동하지 않는 이유는 모르지만 문자열에서 제공된 datetime의 시간 변환과 관련이 있습니다.

코드 :

test.between_time(*pd.to_datetime(['22:08:12.200', '22:08:12.400']).time) 

시험 코드 :

import pandas as pd 
import numpy as np 

idx2 = [ 
    pd.to_datetime('2016-08-31 22:08:12.000'), 
    pd.to_datetime('2016-08-31 22:08:12.200'), 
    pd.to_datetime('2016-08-31 22:08:12.400')] 

test = pd.DataFrame(
    {'value': [1, 1, 3], 'groups': ['A', np.NaN, 'A']}, index=idx2) 

print(test.between_time(
    *pd.to_datetime(['22:08:12.200', '22:08:12.400']).time)) 

결과 :

     groups value 
2016-08-31 22:08:12.200 NaN  1 
2016-08-31 22:08:12.400  A  3 
하지만 같은 time에 명시 적 변환을 해결할 수 있습니다
+0

매우 좋습니다. 감사 !!! –

0

표준 날짜 시간 :

test.between_time(datetime.time(22,8,12,200000),datetime.time(22,8,12,400000),include_start=True,include_end=True) 
관련 문제