首页 > 解决方案 > 如果条件 + 检查 isnull() 为真

问题描述

我有一个看起来像这样的df:

     carry_dt    sedol    prime_broker_id  legal_entity   strategy  NewCarryRate  
716   2018-01-02  B1T84Z4    CITI             USSA-AGG      USSA       NaN

我想检查“NewCarryRate”列中是否有任何 NaN 值并替换它们

我创建了一个 if 条件:

 if (allHoldings['NewCarryRate'].iloc[[i]].isnull())==True:
        allHoldings['NewCarryRate'].values[i]= 100

我收到一条错误消息:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我知道我可以使用np.where,但我发现在这里使用 if 条件更容易,因为如果我愿意,我可以在 if 条件下添加更多行。

非常感谢您的帮助

标签: python-3.xpandasif-statement

解决方案


您可以pd.Series.fillna为此使用:

allHoldings['NewCarryRate'].fillna(100, inplace=True)

整个if条款是不必要的 -fillna这样做。您收到此错误的原因是

if (allHoldings['NewCarryRate'].iloc[[i]].isnull())==True:

某些条目可能为真,而某些条目可能为假;口译员不知道是否执行该子句。


推荐阅读