Pandas 布尔熊猫系列包含NA,但仅针对真实数据,而非测试数据

Pandas 布尔熊猫系列包含NA,但仅针对真实数据,而非测试数据,pandas,Pandas,有些代码已经停止工作,我感到困惑。我还没有设法在测试数据上重现这种行为。我想要一个包含布尔值的列来说明下一个用户是否与当前行的用户相同。下面是它如何处理我的测试数据 data={'user':[1,1,1,2,2],'time':[1,3,7,2,8,9]} df=pd.DataFrame(data=data) df['match']=df['user'].shift(-1)==df['user'] df.loc[df.index[-1],“匹配”] 假的 即,最后一行的用户与不存在的下一行的

有些代码已经停止工作,我感到困惑。我还没有设法在测试数据上重现这种行为。我想要一个包含布尔值的列来说明下一个用户是否与当前行的用户相同。下面是它如何处理我的测试数据

data={'user':[1,1,1,2,2],'time':[1,3,7,2,8,9]}
df=pd.DataFrame(data=data)
df['match']=df['user'].shift(-1)==df['user']
df.loc[df.index[-1],“匹配”]
假的

即,最后一行的用户与不存在的下一行的用户不匹配,因此“匹配”的值为False

如果我在真实数据上运行“相同”代码

events['match']=events['user\u id'].shift(-1)==events['user\u id']
events.loc[事件索引[-1],'match']


为什么??“我的数据”的“用户id”列中没有NaN值,因此我看不出NaN如何出现在我的数据中,而不是在简单的测试数据中?

您确定在这两种情况下都使用相同版本的pandas吗?pandas<1使用np.nan作为nan值,并且(np.nan==1)返回False,但是在pandas==1.0中,有一个新的pd.NA类型,并且(pd.NA==1)返回pd.NA(),我正在同一个笔记本中测试这两个类型,因此它必须是相同的。但这是一个有趣的“明白了”你确定你在这两种情况下都使用了相同版本的熊猫吗?pandas<1使用np.nan作为nan值,并且(np.nan==1)返回False,但是在pandas==1.0中,有一个新的pd.NA类型,并且(pd.NA==1)返回pd.NA(),我正在同一个笔记本中测试这两个类型,因此它必须是相同的。但这是一个有趣的“抓住你了”