首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -比较整个数据框会得到与单个元素不同的结果

问Python -比较整个数据框会得到与单个元素不同的结果
EN

Stack Overflow用户
提问于 2021-01-15 22:25:58
回答 2查看 37关注 0票数 0

我正在比较两个数据帧的列,我得到的结果与单独比较元素的结果不同。这适用于比较"None“。

代码语言:javascript
复制
import pandas as pd

df1 = ["a", None, None, "b"]
df1 = pd.DataFrame(df1)
df2 = ["a", None, "c", "d"]
df2 = pd.DataFrame(df2)
print(df1[0] != df2[0]) #[1] is True, why ??
print(df1[0][1] != df2[0][1]) #[1] here it is False
print( None != None ) #this is False

在比较数据帧时,这个"None“是不是被奇怪地转换了?

编辑:我已经找到了这个https://github.com/pandas-dev/pandas/issues/20442,但它没有给我任何明确的结果...这是功能吗?虫子?会不会被修复?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-15 23:04:24

我认为DataFrames中的None值被视为NA值,当您关注单个元素时,它们被视为常规的None值。df1.isna()显示了这一点。

票数 1
EN

Stack Overflow用户

发布于 2021-01-15 23:04:53

您将数据框视为一维数组,但事实并非如此。当您打印df1时,您会得到以下输出:

代码语言:javascript
复制
      0
0     a
1  None
2  None
3     b

df1引用您的对象。df1[0]引用您的第一组数据

代码语言:javascript
复制
list(df1[0]) == ['a', None, None, 'b']
list(df2[0]) == ["a", None, "c", "d"]

从上面我们可以简单地假设:

代码语言:javascript
复制
df1[0][1] == None
df2[0][1] == None

这就是为什么你的第二个print是假的。None != None确实是False。尽管您使用一维数组初始化数据框,但pandas创建的对象可以使用更复杂的数据集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65737847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档