首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Pandas测试数据帧值的相等性

用Pandas测试数据帧值的相等性
EN

Stack Overflow用户
提问于 2021-03-08 12:54:13
回答 1查看 45关注 0票数 0

当这样做时:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
df = pd.DataFrame({'A': ['1.0', '1.1', '1.2', '1.3'], 'B': ['a', 'b', 'c', 'd']})

row1 = df[df['A'] == '1.1']

if row1['B'] == 'b':  
    print('hello')

我们得到:

ValueError:系列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

为什么是模棱两可的?

如果我使用any()all(),确实可以解决这个问题,但在这里,我不太愿意添加anyall,而不完全理解为什么需要添加。通常,当我们有一个布尔值列表时,anyall是必需的,但是这里只有一个这样的布尔值。

TL;DR:如何用Pandas测试一个数据的相等值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-08 12:56:45

我想你可以检查一下

熊猫遵循NumPy的惯例,当你试图将某物转化为嘘声时,就会产生错误。这种情况发生在if-语句或使用布尔操作时: and,或,而不是.以下代码的结果尚不清楚:

代码语言:javascript
代码运行次数:0
运行
复制
if pd.Series([False, True, False]):
    pass

它应该是真因为它不是零长度,或假因为有假值?目前还不清楚,因此,熊猫反而会饲养一只ValueError:

代码语言:javascript
代码运行次数:0
运行
复制
if pd.Series([False, True, False]):
    print("I was true")

回溯

ValueError:数组的真值是不明确的。使用a.empty、a.any()或a.all()。

您需要显式地选择您想要对DataFrame做什么,例如使用any()、all()或空()。或者,如果熊猫对象为None,您可能需要比较:

代码语言:javascript
代码运行次数:0
运行
复制
if pd.Series([False, True, False]) is not None:
    print("I was not None")

我不是一个人

下面是如何检查其中任何一个值是否为True:

代码语言:javascript
代码运行次数:0
运行
复制
 if pd.Series([False, True, False]).any():
    print("I am any")
I am any

要在布尔上下文中计算单元素熊猫对象,请使用bool()方法:

代码语言:javascript
代码运行次数:0
运行
复制
pd.Series([True]).bool()
True

pd.Series([False]).bool()
False

pd.DataFrame([[True]]).bool()
True

pd.DataFrame([[False]]).bool()
False
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66530235

复制
相关文章

相似问题

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