我想比较两个dfs,然后遇到了这样的情况:
df = pd.DataFrame([{'a':1,'b':2},{'a':3,'b':4}])
df2 = pd.DataFrame([{'a':0,'b':2},{'a':3,'b':4}])元素间的比较就像我所想的那样:
df == df2
Out[52]:
a b
0 False True
1 True True但是all(df)让我很困惑:
all(df==df2)
Out[53]: True而
(df==df2).all()
Out[54]:
a False
b True
dtype: bool发布于 2020-05-15 13:06:16
如果将python的all函数应用于df (这是一个可迭代的),如果所有列名(在dict情况下的键)都是True(!= 0),则返回True。两个数据集中的列名都是字符串(!= 0),它们总是被翻译成True,所以它们之间的比较是True。但是,如果您将dataframe定义更改如下:
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:
mydict = {0 : "Apple", 1 : "Orange"}
print(all(mydict))但是如果我们修改这个词:
mydict = {2 : "Apple", 1 : "Orange"}
print(all(mydict))结果变成True
https://stackoverflow.com/questions/61818534
复制相似问题