2017-02-19 5 views
2

私は多くの変数を持つデータフレームを持っています。インデックスはuidで、その他の変数はすべて日付です。NaTを使ったPandas条件文

特定の値が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

私はあなたに1つの最後のものを求めることができる場合私が2つの日時変数の間で減算を行うと、結果を日数として返すことができますか? –

+0

'print((df ['date1'] - df ['date2']).dt.days)'必要な場合は 'int'として出力してください – jezrael

関連する問題