我正在为机器学习编写一个数据预处理器,它需要将布尔数据视为类别,而不是试图将1视为大于0。在导入带有Pandas DataFrame的csv表之后,我想确定哪些列是boolean并将它们转换为boolean类型,而不需要迭代所有的数值列。Pandas故意将布尔列解释为'int64',我还没有找到任何现有的方法来解决这个问题。在
我尝试过numpy array safe casting,但失败了,因为它不检查是否有任何值不适合布尔值,而是拒绝从任何类型向下转换:
import pandas as pd
df = pd.DataFrame({'a':[1, 0, 1]})
numpy_array = df.values
safe_booleans = numpy_array.astype(bool, casting='safe')
Cannot cast array from dtype('int64') to dtype('bool') according to the rule >'safe'
如果我删除“safe”转换,那么它就可以工作了,但是我需要“safe”,因为也有非布尔列,否则astype会在丢失数据的情况下变成布尔值。在
如果您能指出我的错误或建议其他方法,将只有布尔值的数值列/数组转换为布尔类型,我将不胜感激。在
现在我写了一个迭代来解决这个问题:
但我相信不应该每次都有人需要布尔值作为自己的数据类型。在
相关问题 更多 >
编程相关推荐