Python expndtw-1.any().all()

Python expndtw-1.any().all(),python,pandas,Python,Pandas,我不断得到ValueError:序列的真值是模糊的。使用pandas尝试布尔测试时,请使用a.empty、a.bool()、a.item()、a.any()或a.all()。我不明白它说了什么,所以决定试着弄明白 然而,在这一点上,我完全感到困惑 在这里,我创建了一个包含两个变量的数据框架,它们之间共享一个数据点(3): 现在我尝试全部(x小于y),我将其转换为“x的所有值都小于y”,我得到了一个没有意义的答案 In [79]: if all(df['x'] < df['y']):

我不断得到
ValueError:序列的真值是模糊的。使用pandas尝试布尔测试时,请使用a.empty、a.bool()、a.item()、a.any()或a.all()。我不明白它说了什么,所以决定试着弄明白

然而,在这一点上,我完全感到困惑

在这里,我创建了一个包含两个变量的数据框架,它们之间共享一个数据点(3):

现在我尝试全部(x小于y),我将其转换为“x的所有值都小于y”,我得到了一个没有意义的答案

In [79]:

if all(df['x'] < df['y']):
    print('True')
else:
    print('False')
True
In [77]:

if any(df['x'] < df['y']):
    print('True')
else:
    print('False')
False
[79]中的

如果全部(df['x']
接下来我尝试了any(x小于y),我把它翻译成“x小于y的任何值”,我得到了另一个没有意义的答案

In [79]:

if all(df['x'] < df['y']):
    print('True')
else:
    print('False')
True
In [77]:

if any(df['x'] < df['y']):
    print('True')
else:
    print('False')
False
[77]中的

如果有(df['x']

简而言之:any()和all()实际上做什么?

熊猫建议您在构建函数中使用系列方法
any()
all()
,而不是Python

我不太理解您的奇怪输出的来源(在Python 2.7和Pandas 0.17.0中,我都能理解这两种情况)。但是试试下面的方法,它应该会起作用。这使用
Series.any()
Series.all()
方法

import pandas as pd

df = pd.DataFrame()

df['x'] = [1,2,3]
df['y'] = [3,4,5]

print (df['x'] < df['y']).all() # more pythonic way of
print (df['x'] < df['y']).any() # doing the same thing

要比较两个
pd.DataFrame
对象的内容和结构相等性,可以使用:

将熊猫作为pd导入
定义是否相等(df:pd.DataFrame,df2:pd.DataFrame)->bool:
返回df.equals(df2)和(df.all()==df2.all()).all()

只看一下
df['x']
。它做了一个基本的比较;i、 这是一系列的
[df['x'][0]。然后
all(df['x']
是真的,因为该系列中的所有元素都是真的。我无法重现您观察到的错误。对我来说,
如果有(df['x']
会发出
True
。你可能在中间语句中做了一些奇怪的事情;尝试打印(df['x'],df['y'],df['x']你能发布一些示例代码来生成你原来的
'序列的真值是不明确的'
错误吗?我想你正在混淆内置的
any()
all()
函数和
a.any()
a.all()
Numpy数组的方法/Python系列。顺便说一句,if的一种更具Python风格的方法是执行
print any(df['x']
。下面是产生原始错误的代码:if df['x']7打印(df['x']