繁体   English   中英

熊猫系列元素明智的布尔检查是模棱两可的

[英]pandas Series elementwise boolean checks are ambigious

不知道如何使用.bool(),any,all或empty来使两个不同的示例正常工作。 每个都给我抛出歧义值错误

import pandas as pd


first = pd.Series([1,0,0])
second = pd.Series([1,2,1])

number_df = pd.DataFrame( {'first': first,  'second': second} )

bool_df = pd.DataFrame( {'testA': pd.Series([True, False, True]), 'testB': pd.Series([True, False, False])})

#ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

""" both the next two lines fail with the ambiguous Series issue"""
#each row should be true or false 
bool_df['double_zero_check'] = (number_df['first'] != 0) and (number_df['second'] != 0 )
bool_df['parity'] = bool_df['testA'] and bool_df['testB']

您需要使用按位和( & )来逐个比较Series元素- 文档中的更多内容

In [3]: bool_df['double_zero_check'] = (number_df['first'] != 0) & (number_df['second'] != 0 )

In [4]: bool_df['parity'] = bool_df['testA'] & bool_df['testB']

In [5]: bool_df
Out[5]: 
   testA  testB double_zero_check parity
0   True   True              True   True
1  False  False             False  False
2   True  False             False  False

您必须使用按位和(&)运算符。 and适用于boolean而不适用于Pandas Series。

bool_df['double_zero_check'] = (number_df['first'] != 0) & (number_df['second'] != 0 )
bool_df['parity'] = bool_df['testA'] & bool_df['testB']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM