根据单个矢量化条件替换列中的值

Replacing the value in a column based on a single vectorized condition

我在多个条件下尝试了以下代码并且工作完美,无论我在一个条件下尝试什么它都不会工作。无论 Col_A 的值是否为 True,它都会简单地 return 每行的值“1”和“SD”。请让我知道任何建议,奇怪的是我没有收到任何错误。

condition = [
    df1['Col_A'] == 'TRUE'
]

result1 = ['1']
result2 = ['SD']

df1['Col_B'] = np.select(condition, result1, 'NA')
df1['Col_C'] = np.select(condition, result2, 'NA')
df1```

Input

        Col_A    Col_B     Col_C
    0   TRUE       NA         NA     
    1   FALSE      1001       Valid  
    2   TRUE       NA         NA    
    3   TRUE       NA         NA

Output

        Col_A    Col_B     Col_C
    0   TRUE       NA         NA     
    1   FALSE      NA         NA  
    2   TRUE       NA         NA    
    3   TRUE       NA         NA
  
Desired Output

        Col_A    Col_B     Col_C
    0   TRUE       1         SD     
    1   FALSE      1001      Valid  
    2   TRUE       1         SD    
    3   TRUE       1         SD

您可以使用带有条件的简单 loc 赋值:

字符串"TRUE":

df.loc[df['Col_A'].eq('TRUE'), ['Col_B', 'Col_C']] = [1, 'SD']

布尔值True:

df.loc[df['Col_A'], ['Col_B', 'Col_C']] = [1, 'SD']

输出:

   Col_A   Col_B  Col_C
0   TRUE     1.0     SD
1  FALSE  1001.0  Valid
2   TRUE     1.0     SD
3   TRUE     1.0     SD