Pandas 带 NaT 的条件语句
Pandas conditional statement with NaT
所以,我有一个包含许多变量的数据框。索引是uid,其他变量都是日期。
我试图在某个值为 NaT 时创建标志变量,但找不到正确的语句。
我想要这样的东西:
auxData['flagInvited'] = np.where(auxData['invited'] == NaT, 0, 1)
我怎样才能轻松做到这一点?
我认为您需要 notnull
才能转换为 boolean mask
,然后转换为 int
- True
是 1
,False
是0
:
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
所以,我有一个包含许多变量的数据框。索引是uid,其他变量都是日期。
我试图在某个值为 NaT 时创建标志变量,但找不到正确的语句。
我想要这样的东西:
auxData['flagInvited'] = np.where(auxData['invited'] == NaT, 0, 1)
我怎样才能轻松做到这一点?
我认为您需要 notnull
才能转换为 boolean mask
,然后转换为 int
- True
是 1
,False
是0
:
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