我有一个数据帧,其中包含一个由 0 和 1 组成的热编码列,其类型为 dtype int32。
a b h1 h2 h3
xy za 0 0 1
ab cd 1 0 0
pq rs 0 1 0
Run Code Online (Sandbox Code Playgroud)
我想将 h1、h2 和 h3 列转换为布尔值,所以这就是我所做的..
df[df.columns[2:]].astype(bool)
Run Code Online (Sandbox Code Playgroud)
但这将 h1-h3 的所有值更改为TRUE。
我也尝试过
df[df.columns[2:]].map({0:False, 1:True})
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。(属性错误:“DataFrame”对象没有属性“map”)
int32将数据帧的特定列从0 和 1 转换为布尔值 ( True/ )的最佳方法是什么False?
您可以使用 前 2 个位置之后的位置选择所有列DataFrame.iloc,转换为布尔值并分配回来:
df.iloc[:, 2:] = df.iloc[:, 2:].astype(bool)
print (df)
a b h1 h2 h3
0 xy za False False True
1 ab cd True False False
2 pq rs False True False
Run Code Online (Sandbox Code Playgroud)
或者创建字典来转换不带first的列名称2:
df = df.astype(dict.fromkeys(df.columns[2:], bool))
print (df)
a b h1 h2 h3
0 xy za False False True
1 ab cd True False False
2 pq rs False True False
Run Code Online (Sandbox Code Playgroud)