我的名为pw2
的数据框看起来像这样,其中我有两列,pw1和pw2,它们是获胜的概率。我想执行一些条件逻辑,根据pw1
和{WINNER
的列。在
+-------------------------+-------------+-----------+-------------+
| Name1 | pw1 | Name2 | pw2 |
+-------------------------+-------------+-----------+-------------+
| Seaking | 0.517184213 | Lickitung | 0.189236181 |
| Ferrothorn | 0.172510623 | Quagsire | 0.260884258 |
| Thundurus Therian Forme | 0.772536272 | Hitmonlee | 0.694069408 |
| Flaaffy | 0.28681284 | NaN | NaN |
+-------------------------+-------------+-----------+-------------+
我想在函数中有条件地执行此操作,但遇到了一些问题。在
pw1
>;pw2
,则填充Name1
pw2
>;pw1
,则填充Name2
pw1
,但pw2
没有,则填充Name1
pw2
,但pw1
没有填充,则填充Name2
但是我的函数不起作用-由于某些原因,检查值是否为null是不起作用的。在
^{pr2}$
不要使用
apply
,这是非常慢的。使用np.where
一旦
NaN
总是丢失,就可以fillna()
它与-np.inf
产生相同的逻辑。在看看你的代码,我们可以指出几个问题。首先,您要比较
df['pw1'] = None
,这是用于比较的无效python语法。您通常希望使用==
运算符比较事物。但是,对于None
,建议使用is
,例如if variable is None: (...)
。然而,您又处在一个pandas/numpy
的环境中,这里实际上有几个空值(None
,NaN
,NaT
等)的值。在因此,最好使用
pd.isnull()
或df.isnull()
检查可空性。在为了说明这一点,您的代码应该是这样的:
^{pr2}$但再次强调,一定要使用
np.where
。在相关问题 更多 >
编程相关推荐