亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據其他列更改值時,Pandas NaN 值會導致問題

根據其他列更改值時,Pandas NaN 值會導致問題

慕標琳琳 2021-06-28 12:06:41
為什么 Pandas NaN 值有時輸入為 numpy.float64,有時是浮動的?當我想使用函數并根據其他列更改數據框中的值時,這非常令人困惑例子:   A    B    C0  1  NaN    d1  2    a    s2  2    b    s3  3    c  NaN我有一個 def 來改變 C 列的值def change_val(df):    if df.A==1 and df.B==np.nan:        return df.C    else:        return df.B然后我將此函數應用到 C 列df['C']=df.apply(lambda x: change_val(x),axis=1)事情出了問題df.B==np.nan,我該如何正確表達?想要的結果:   A    B    C0  1  NaN    d1  2    a    a2  2    b    b3  3    c    c
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

使用numpy.where或loc,用于檢查缺失值使用特殊功能Series.isna:


mask = (df.A==1) & (df.B.isna())

#oldier pandas versions

#mask = (df.A==1) & (df.B.isnull())

df['C'] = np.where(mask, df.C, df.B)

或者:


df.loc[~mask, 'C'] = df.B

print (df)

   A    B  C

0  1  NaN  d

1  2    a  a

2  2    b  b

3  3    c  c

有關使用缺失數據檢查文檔的更多信息。


查看完整回答
反對 回復 2021-07-13
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

def change_val(df):

    if df.A==1 and pd.isnull(df.B):

        return df.C

    else:

        return df.B

NaN 是無值將不等于任何值,甚至不等于 Nan 本身,因此使用 isnull()/isna()


查看完整回答
反對 回復 2021-07-13
  • 2 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號