Pandas 将整数零和一转换为布尔值

Dev*_*ami 5 python pandas

我有一个数据帧,其中包含一个由 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

jez*_*ael 7

您可以使用 前 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)