首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有操作: all(df) != df.all()

所有操作: all(df) != df.all()
EN

Stack Overflow用户
提问于 2020-05-15 11:51:07
回答 1查看 86关注 0票数 1

我想比较两个dfs,然后遇到了这样的情况:

代码语言:javascript
复制
df = pd.DataFrame([{'a':1,'b':2},{'a':3,'b':4}])
df2 = pd.DataFrame([{'a':0,'b':2},{'a':3,'b':4}])

元素间的比较就像我所想的那样:

代码语言:javascript
复制
df == df2 
Out[52]:
       a     b
0  False  True
1   True  True

但是all(df)让我很困惑:

代码语言:javascript
复制
all(df==df2)
Out[53]: True

代码语言:javascript
复制
(df==df2).all()
Out[54]:
a    False
b     True
dtype: bool
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 13:06:16

如果将python的all函数应用于df (这是一个可迭代的),如果所有列名(在dict情况下的键)都是True(!= 0),则返回True。两个数据集中的列名都是字符串(!= 0),它们总是被翻译成True,所以它们之间的比较是True。但是,如果您将dataframe定义更改如下:

代码语言:javascript
复制
df = pd.DataFrame([{0:1,'b':2},{0:3,'b':4}])
df2 = pd.DataFrame([{0:1,'b':2},{0:3,'b':4}])

df1 = df==df2
print(all(df1))

然而,所有的值都是相等的,但它会抛出False。同样对于dict,以下内容是False

代码语言:javascript
复制
mydict = {0 : "Apple", 1 : "Orange"}
print(all(mydict))

但是如果我们修改这个词:

代码语言:javascript
复制
mydict = {2 : "Apple", 1 : "Orange"}
print(all(mydict))

结果变成True

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

https://stackoverflow.com/questions/61818534

复制
相关文章

相似问题

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