pandas df.any()方法返回True/False,而不是预期的NaN

x6492ojm  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(387)

我正在尝试进入panda,所以我使用了一些来自kaggle的免费数据。基本上,我有一个DataFrame,只有几行是NaN。我想使用df.any创建新列().我希望它在其他行返回True或False,但这里有一点我不明白(请确保我花了大约2天的调试,阅读所有的文档,在线测试,论坛,甚至stackoverflow等,然后我决定写这个问题):
1.如果我在在线jupyter编辑器df.any(axis=1,skipna=False)中运行相同的代码,执行如下操作:

  • 对于至少包含一个True值的行,它将True返回给新列
  • 对于没有True值的行(但有一些其他值),它将False返回给新列
  • 对于只包含NaN的行,它在新列中返回NaN

这是我所期望和想要的行为(上图)
1.如果我从在线jupyter编辑器复制代码并在我的笔记本上本地运行它,结果看起来像这样:

  • 对于至少包含一个True值的行,它将True返回给新列
  • 对于没有True值的行(但有一些其他值),它将False返回给新列
  • 对于只包含NaN的行,它返回:
  • 真,如果我设置“skipna=False”
  • 如果我不使用“skipna=False”,则为False,这基本上意味着由于文档化,它为True。

我以为我疯了(我猜你现在明白我疯了的阶段),但是由于数据是免费的,我贴了几个屏幕给你看。

在上述两种情况下,我期望列“dissatisated”中的值为NaN。
当然,我把描述简化了一点,至少让我的观点更清楚。我真正尝试的是(如屏幕截图所示),我通过只检查两列['Contributing Factors. Dissatisfaction','Contributing Factors. Job Dissatisfaction']创建了新列['unsatisfaction'],其中df.any()方法。我仍然希望这些行的返回值为NaN。但是我只在网上得到这个输出,但我的笔记本上没有使用jupyter。阅读所有的文档。我不认为这是由不同的Pandas版本引起的。df。any根据我的研究,对于仅包含NaN的行,任何版本的()都不应返回True/False。
你们能解释一下吗?或者我真的错过了什么是导致这一点?你会让我的周末容易得多,如果你能提供解释/解决方案。

oknwwptz

oknwwptz1#

这可能是因为你使用了不同版本的Python或panda,在documentation中你可以检查不同版本的any方法的行为。

相关问题