带 NaT 的 Pandas 条件语句

Ant*_*des 2 python conditional numpy dataframe pandas

所以,我有一个包含许多变量的数据框。索引是uid,其他变量都是日期。

当某个值为 NaT 时,我试图创建标志变量,但我找不到正确的语句。

我想要这样的东西:

auxData['flagInvited'] = np.where(auxData['invited'] == NaT, 0, 1)
Run Code Online (Sandbox Code Playgroud)

我怎样才能轻松做到这一点?

jez*_*ael 5

我认为您需要notnull转换为boolean mask然后转换为int- Trueis1Falseis 0

auxData['flagInvited'] = auxData['invited'].notnull().astype(int)
Run Code Online (Sandbox Code Playgroud)

样本:

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
Run Code Online (Sandbox Code Playgroud)