熊猫中的布尔和非布尔列的声明令人惊讶地产生了结果

时间:2019-02-15 07:59:56

标签: pandas

我在熊猫DataFrame中“插入”一个二进制和非二进制列。令我惊讶的是,这实际上给出了结果(我期待一个错误)。看下面的代码:

import pandas as pd
d = {'col1':[1,1,2,2,2], 'col2':[3,4,4,4,3]}
test_df = pd.DataFrame(data = d)
test_df['bool1'] = [True, False, True, True, False]
test_df['bool2'] = [True, False, True, True, True]
test_df['col3'] = [1,3,3,5,5]
test_df['col3'] & test_df['bool1']

我得到以下结果:

0     True
1    False
2     True
3     True
4    False
dtype: bool

大熊猫如何评价这一点? col3不是布尔值/二进制值,因此我很难确定是什么决定两者的组合是True还是False

1 个答案:

答案 0 :(得分:0)

这里将0强制转换为False,将另一个整数强制转换为True

d = {'col1':[1,1,2,2,2], 'col2':[3,4,4,4,3]}
test_df = pd.DataFrame(data = d)
test_df['bool1'] = [True, False, True, True, False]
test_df['bool2'] = [True, False, True, True, True]
#changed first value to 0
test_df['col3'] = [0,3,3,5,5]

print (test_df['col3'] & test_df['bool1'])
0    False
1    False
2     True
3     True
4    False
dtype: bool

它的工作方式与astype相同:

print (test_df['col3'].astype(bool))
0    False
1     True
2     True
3     True
4     True
Name: col3, dtype: bool

下一读-Is False == 0 and True == 1 in Python an implementation detail or is it guaranteed by the language?