pandas数据帧将INT64列转换为布尔值

use*_*148 13 python boolean numpy pandas

数据帧df,df.column中的某些列存储为数据类型int64.

值均为1或0.

有没有办法用布尔值替换这些值?

unu*_*tbu 32

df['column_name'] = df['column_name'].astype('bool')
Run Code Online (Sandbox Code Playgroud)

例如:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random_integers(0,1,size=5), 
                  columns=['foo'])
print(df)
#    foo
# 0    0
# 1    1
# 2    0
# 3    1
# 4    1

df['foo'] = df['foo'].astype('bool')
print(df)
Run Code Online (Sandbox Code Playgroud)

产量

     foo
0  False
1   True
2  False
3   True
4   True
Run Code Online (Sandbox Code Playgroud)

给定一个列表column_names,您可以bool使用以下命令将多个列转换为dtype:

df[column_names] = df[column_names].astype(bool)
Run Code Online (Sandbox Code Playgroud)

如果您没有列名列表,但希望转换所有数字列,那么您可以使用

column_names = df.select_dtypes(include=[np.number]).columns
df[column_names] = df[column_names].astype(bool)
Run Code Online (Sandbox Code Playgroud)

  • 如何让熊猫自动检测到这一点?如果只有0和1.,则将其设为布尔值? (2认同)
  • 尝试了`df['column_name'] = df['column_name'].astype('bool')`。**布尔** 值默认为“True”。如何将 **boolean** 默认为 `False`? (2认同)