Pandas Dataframe - 用布尔掩码替换值

Pandas Dataframe - replace value with boolean mask

我有一个数据框,其中有一列名为 'Temperature'

data = {'Day':  [1,2,3,4],
        'Temperature': [20,30,40,50]
        }

现在,我不需要温度数字,而是将“1”分配给温度在 25 到 45 范围内的单元格。如果不是,我将为其分配 0。

我想要的数据框是

    data = {'Day':  [1,2,3,4],
        'Temperature': [0,1,1,0]
        }

我有一个如下所示的布尔掩码:

df[(df['Temperature']<=45) & (df['Temperature']>=25)]

如何使用布尔掩码来实现?或者,最好的方法是什么?

谢谢。

想法是通过转换为整数将布尔掩码转换为 0,1

df = pd.DataFrame(data)

df['Temperature'] = ((df['Temperature']<=45) & (df['Temperature']>=25)).astype(int)

df['Temperature'] = np.where(df['Temperature']<=45) & (df['Temperature']>=25), 1, 0)

Series.between类似的解决方案:

df['Temperature'] = df['Temperature'].between(25, 45).astype(int)

df['Temperature'] = np.where(df['Temperature'].between(25, 45), 1, 0)
data = {'Day':  [1,2,3,4],
        'Temperature': [20,30,40,50]
        }

df = pd.DataFrame(data)
df[(df['Temperature']<=45) & (df['Temperature']>=25)] = 1
df[(df['Temperature']>=45) & (df['Temperature']>=25)] = 0