代码之家  ›  专栏  ›  技术社区  ›  SBad

如果条件+检查IsNull()为真

  •  1
  • SBad  · 技术社区  · 7 年前

    我有一个像这样的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条件下添加更多的行。

    非常感谢你的帮助

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ami Tavory    7 年前

    你可以用 pd.Series.fillna 为此:

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

    整个 if 子句是不必要的- fillna 做这个。你得到这个错误的原因是

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

    有些条目可能是真的,有些条目可能是假的;解释器不知道是否执行该子句。