如何根据其他列中的条件将pandas df列中的多个值更改为np.nan?

Jed*_*ide 4 python dataframe pandas

我没有太多的编码经验,这是我的第一个问题,所以请耐心等待我.我需要找到一种方法,根据另一列中的条件,将pandas df列的多个值更改为np.nan.因此,我创建了所需列"Vorgabe"和"Temp"的副本.

每当"Grad"中的值不为0时,我想将"Vorgabe"和"Temp"中的definded区域中的值更改为np.nan.

print(df)  

    OptOpTemp  OpTemp  BSP  Grad  Vorgabe  Temp
0        22.0    20.0    5   0.0     22.0  20.0
1        22.0    20.5    7   0.0     22.0  20.5
2        22.0    21.0    8   1.0     22.0  21.0
3        22.0    21.0    6   0.0     22.0  21.0
4        22.0    23.5    7   0.0     22.0  20.0
5        23.0    21.5    1   0.0     23.0  21.5
6        24.0    22.5    3   1.0     24.0  22.5
7        24.0    23.0    4   0.0     24.0  23.0
8        24.0    25.5    9   0.0     24.0  25.5
Run Code Online (Sandbox Code Playgroud)

所以我想实现这样的目标:

    OptOpTemp  OpTemp  BSP  Grad  Vorgabe  Temp
0        22.0    20.0    5   0.0     22.0  20.0
1        22.0    20.5    7   0.0     nan   nan      <-one row above
2        22.0    21.0    8   1.0     nan   nan
3        22.0    21.0    6   0.0     nan   nan      <-one row among
4        22.0    23.5    7   0.0     22.0  20.0
5        23.0    21.5    1   0.0     nan   nan
6        24.0    22.5    3   1.0     nan   nan
7        24.0    23.0    4   0.0     nan   nan
8        24.0    25.5    9   0.0     24.0  25.5
Run Code Online (Sandbox Code Playgroud)

有人能解决我的问题吗?

编辑:我可能不清楚.目标是将定义区域中"Vorgabe"和"Temp"中的每个值更改为nan.在我的例子中,区域将在上面一行,行中有1.0,其中一行.因此,不仅是1.0所在的行,还有上面和下面的行.

Dan*_*ejo 5

使用loc:

df.loc[df.Grad != 0.0, ['Vorgabe', 'Temp']] = np.nan
print(df)
Run Code Online (Sandbox Code Playgroud)

产量

   OptOpTemp  OpTemp  BSP  Grad  Vorgabe  Temp
0       22.0    20.0    5   0.0     22.0  20.0
1       22.0    20.5    7   0.0     22.0  20.5
2       22.0    21.0    8   1.0      NaN   NaN
3       22.0    21.0    6   0.0     22.0  21.0
4       22.0    23.5    7   0.0     22.0  20.0
5       23.0    21.5    1   0.0     23.0  21.5
6       24.0    22.5    3   1.0      NaN   NaN
7       24.0    23.0    4   0.0     24.0  23.0
8       24.0    25.5    9   0.0     24.0  25.5
Run Code Online (Sandbox Code Playgroud)