2017-02-19 3 views
2

그래서 변수가 많은 데이터 프레임이 있습니다. 인덱스는 uid이고 다른 변수는 모든 날짜입니다.NaT를 사용하는 팬더 조건문

특정 값이 NaT이지만 올바른 진술을 찾을 수없는 경우 플래그 변수를 만들려고합니다.

나는 이런 식으로 뭔가 싶어 :

auxData['flagInvited'] = np.where(auxData['invited'] == NaT, 0, 1) 

어떻게이 쉽게 할 수 있습니까?

답변

3

난 당신이 boolean mask로 변환하기위한 notnull을 필요로하고 int 캐스팅 생각 - True1하고 False0입니다 :

auxData['flagInvited'] = auxData['invited'].notnull().astype(int) 

이 샘플 :

auxData = pd.DataFrame({'invited':[np.nan, '2017-01-01','2017-03-03']}) 
auxData.invited = pd.to_datetime(auxData.invited, dayfirst=True) 
print (auxData) 
    invited 
0  NaT 
1 2017-01-01 
2 2017-03-03 

print (auxData['invited'].notnull()) 
0 False 
1  True 
2  True 
Name: invited, dtype: bool 

auxData['flagInvited'] = auxData['invited'].notnull().astype(int) 
print (auxData) 
    invited flagInvited 
0  NaT   0 
1 2017-01-01   1 
2 2017-03-03   1 
+0

내가 당신에게 마지막으로 한 가지를 요청할 수있는 경우 , 2 datetime 변수 사이에 뺄셈을 할 때 어떻게 결과를 일 수로 반환 할 수 있습니까? –

+0

확실히'print ((df [ 'date1'] - df [ 'date2']) .dt.days)''int '로 출력해야하는 경우 – jezrael