为了账号安全,请及时绑定邮箱和手机立即绑定

根据其他列更改值时,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 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号