This question already has answers here:
Comparing boolean and int using isinstance
                                
                                    (4个答案)
                                
                        
                                9个月前关闭。
            
                    
在应用以下函数的同时,我将布尔值转换为整数。

我想念什么?

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

最佳答案

这是因为:

>>> isinstance(True, int)
True
>>>


True实际上是1

而且False实际上是0,因此您正在尝试这种方法。

要解决此问题,请使用type

def multi(x):
    if type(x) in (float, int)):
        return x * 10
    return x

关于python - 将pandas DataFrame中的 bool 值转换为int,同时应用函数将数字相乘[duplicate],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55491782/

10-12 14:28