2015-11-06 75 views
0

不知道如何使用.bool(),任何,全部或空,使兩個不同的例子工作。每個拋出我的曖昧值誤差熊貓系列元素布爾檢查是模糊

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'] 

回答

2

您需要使用按位與(&)比較系列的elementwise - 多在docs

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 
2

你必須使用按位與(&)運營商。 and適用於布爾型而不適用於熊貓系列。

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