应用以下函数时,我会将bool值转换为整数。
我想念什么?
import pandas as pd
def multi(x):
if isinstance(x, (float, int)):
return x * 10
return x
print(pd.DataFrame(data={"a": [True, False]}).applymap(func=multi))
输出:
a
0 10
1 0
预期:
a
0 True
1 False
答案 0 :(得分:1)
这是因为:
>>> isinstance(True, int)
True
>>>
True
实际上是1
!
False
实际上是0
,所以您有点奇怪地尝试这种方法。
要解决此问题,请使用type
:
def multi(x):
if type(x) in (float, int)):
return x * 10
return x
答案 1 :(得分:0)
与数字相乘时,布尔值被视为整数(1、0)。所以当你这样做
True * 10 #(= 1 * 10)
输出为
10
类似地,
False * 10 #(= 0 * 10)
等于0
这是因为Boolean是int的子类。您可以阅读有关here
的信息