假设我有一个像这样的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)
任何人都可以指出我如何实现这一目标?
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)
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |