我在熊猫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
?
答案 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?