Skip to main content
 首页 » 编程设计

python之pandas:将具有 2 个值的所有列转换为 True/False

2025年05月04日13softidea

我有一个 Pandas 数据框。某些列只有 2 个唯一值(例如好/坏、高/低、失败/通过)。它们的 dtype 是 object,因为数据帧是从 CSV 文件加载的。

我想将这些列转换为 True/False,并自动将列名更改为 is_FIRST_VALUE。

例如,

  X1   X2   X3   
  HIGH FAIL GOOD 
  HIGH PASS GOOD 
  LOW  FAIL BAD 

应该转换:

X1_is_HIGH  X2_is_FAIL  X3_is_GOOD 
True        True        True 
True        False       True 
False       True        False 

请您参考如下方法:

你可以试试这个。遍历每一列。获取列的第一个唯一值。条件是该行是否包含此唯一值。因为我们想要条件的结果,只需将该值设置为该列。

df = pd.DataFrame({ 
                'X1' : ['HIGH', 'LOW', 'HIGH', 'HIGH'],  
                'X2' : ['FAIL', 'PASS','FAIL', 'PASS'], 
                'X3' : ['GOOD','GOOD', 'BAD', 'BAD'] 
            }) 
 
for column in df.columns: 
    uni = df[column].unique()[0] 
    mask = df[column] == uni 
    df[column] = mask 
    df.rename(columns = {column:column+'_'+uni}, inplace=True) 
 
    X1_HIGH         X2_FAIL         X3_GOOD 
0   True            True            True 
1   False           False           True 
2   True            True            False 
3   True            False           False