数据框上的 Python If 语句

标签 python if-statement numpy pandas

如果 df['nonzero'] 的相应值不是 'NAN' 且“<= 1”,我想将列 df['pred'] 替换为 0。

         beta0  beta1  number_repair   t  pred  nonzero  
0          NaN    NaN            NaN   6     0      NaN  
1          NaN    NaN            NaN   7     0      NaN  
2          NaN    NaN            NaN   8     0      NaN  
3          NaN    NaN            NaN   9     3      0  
4          NaN    NaN            NaN  10     2      0  
5          NaN    NaN            NaN  11     1      0  

我尝试了以下代码,但返回错误。我如何纠正代码或者有人可以建议其他方法来实现它?谢谢!

mapping['pred'] = 0 if (np.all(np.isnan(mapping['nonzero'])),
(mapping['nonzero'] <= 1)) else mapping['pred']

最佳答案

我认为你可以使用loc通过函数 notnull 使用 mask :

mask = (df['nonzero'].notnull()) & (df['nonzero'] <= 1)
print mask
0    False
1    False
2    False
3     True
4     True
5     True
Name: nonzero, dtype: bool

作者:comment (谢谢 PhilChang)它与:

mask = df['nonzero'] <= 1
print mask
0    False
1    False
2    False
3     True
4     True
5     True
Name: nonzero, dtype: bool
df.loc[ mask, 'pred'] = 0
print df
   beta0  beta1  number_repair   t  pred  nonzero
0    NaN    NaN            NaN   6     0      NaN
1    NaN    NaN            NaN   7     0      NaN
2    NaN    NaN            NaN   8     0      NaN
3    NaN    NaN            NaN   9     0      0.0
4    NaN    NaN            NaN  10     0      0.0
5    NaN    NaN            NaN  11     0      0.0

另一个解决方案 mask :

df['pred'] = df.pred.mask(mask,0)
print df
   beta0  beta1  number_repair   t  pred  nonzero
0    NaN    NaN            NaN   6     0      NaN
1    NaN    NaN            NaN   7     0      NaN
2    NaN    NaN            NaN   8     0      NaN
3    NaN    NaN            NaN   9     0      0.0
4    NaN    NaN            NaN  10     0      0.0
5    NaN    NaN            NaN  11     0      0.0

关于数据框上的 Python If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719191/

相关文章:

python - 从字符串 python 创建单项元组

javascript - AngularJS Controller 中基于值的重定向

c++ - "if constexpr()"与 "if()"之间的区别

c# - 如果 else 为真,我怎样才能使程序循环回到开始? C#

Python:识别一维分布中的起伏模式

python - numpy数组切片,从每个第三维获取一个

python - Python 中的快速按位求和

python - python中的UDP广播和自动服务器发现,TCP套接字不可用

python - 随时随地向 GStreamer 管道添加和删除音频源

连接正则表达式对象的 Pythonic 方法