Python熊猫.替换列中的值

Gri*_*kin 2 python pandas

假设我有一个像这样的DataFrame对象:

age_diff    result
       1         0
      -1         1
       0         1
Run Code Online (Sandbox Code Playgroud)

我想age_diff通过应用它们来替换列中的负值abs.此外,如果age_diff更改了值in,result则应切换列中的值(如果为0则为1,否则为0).

在此转换之后,如上所示,DataFrame应如下所示:

age_diff    result
       1         0
       1         0
       0         1
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我如何实现这一目标?

jez*_*ael 5

使用abs+ mask+ mapdict:

print (df)
   age_diff  result
0         1       0
1        -1       0
2        -1       1
3         0       1


mask = df['age_diff'] < 0
df['age_diff'] = df['age_diff'].abs()
df['result'] = df['result'].mask(mask, df['result'].map({0:1, 1:0}))
print (df)
   age_diff  result
0         1       0
1         1       1
2         1       0
3         0       1
Run Code Online (Sandbox Code Playgroud)

另一个解决方案 - 而不是映射到bool和反转~:

mask = df['age_diff'] < 0
df['age_diff'] = df['age_diff'].abs()
df['result'] = df['result'].mask(mask, ~(df['result'].astype(bool)))
print (df)
   age_diff  result
0         1       0
1         1       1
2         1       0
3         0       1
Run Code Online (Sandbox Code Playgroud)