2017-04-24 1 views
0

다음 대상이 있습니다. 동일한 테이블에서 두 날짜 열을 비교하고 비교 결과에 따라 세 번째 열을 만들어야합니다. np.where 문에서 날짜를 비교하는 방법을 모르겠습니다.PYTHON Numpy 시간 조건이

이 내 현재 코드입니다 :

DB['s_date'] = np.where((DB['Start Date']<=time_delta | DB['Start Date'] = (None,"")),DB['Start Date'],RW['date']) 

계정에 날짜 열 수 있습니다 시작 가능성을 취할 OR 조건이 있습니다 : 여기

now = datetime.datetime.now() #set the date to compare 
delta = datetime.timedelta(days=7) #set delta 
time_delta = now+delta #now+7 days 

그리고는 np.where 성명 비어 있습니다

+0

'| '를'또는'로 변경해보십시오. – eyllanesc

+0

작동하지 않습니다. "dtyped [datetime64 [ns]] 배열을 [bool] 유형의 스칼라와 비교할 수 없습니다." – Filippo

+0

'(DB [ '시작 날짜'] <= 시작일 'DB ='시작 날짜 '= , ""))''(DB [ '시작일'] <= 시작일 ''== ' ")''이어야합니다. – Abdou

답변

0

람다가 당신을 위해 일할 것입니까? 일련의 행을 살펴본 다음 행의 모든 ​​값에 선택한 함수를 적용합니다. 함수에 반환 된 값은 시리즈가 반환하는 값으로 채워집니다.

def compare(date): 
    if date <= time_delta or date == None: 
     #return something 
    else: 
     #return something else 
DB['s_date'] = DB.apply(lambda x: compare(x)) 

편집 :이뿐만 아니라 (감사 EyuelDK)를 작동

DB['s_date'] = DB.apply(compare) 
+1

대신에 DB [ 's_date'] = DB.apply (compare)'를 사용하여 조금 단순화 할 수 있습니다 – EyuelDK

0

는 통찰력 주셔서 감사합니다. 나는 업데이트 (내 목적을 위해 조정) 코드를 다음과 같이하고 그것을 작동 :

now = datetime.datetime.now() #set the date to compare 
delta = datetime.timedelta(days=7) #set delta 
time_delta = now+delta #now+7 days 

DB['Start'] = np.where(((DB['Start Date']<=time_delta) | (DB['Start Date'].isnull()) | (DB['Start Date'] == "")),DB['Start'],DB['Start Date']) 

그들은 키로 구분하여 각 조건에서()를 추가하는 것이 었습니다. | 그렇지 않으면 두 가지 다른 데이터 유형을 비교하여 오류가 발생했습니다.