将pandas DataFrame中的布尔值转换为整数,同时将函数乘以数字

时间:2019-04-03 09:32:37

标签: python pandas

应用以下函数时,我会将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

2 个答案:

答案 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

的信息