您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python Pandas:如果数据是NaN,则更改为0,否则在数据框中更改为1

5b51 2022/1/14 8:22:40 python 字数 3648 阅读 538 来源 www.jb51.cc/python

我有一个DataFrame:df如下: row id name age url 1 e1 tom NaN http1 2 e2 john 25 NaN 3 e3 lucy NaN http3 4 e4 tick 29 NaN 我想将NaN更改为0,否则在列中更改为1:ag

概述

row  id  name    age   url           
  1   e1   tom    NaN   http1   
  2   e2   john   25    NaN
  3   e3   lucy   NaN  http3 
  4   e4   tick   29    NaN

我想将NaN更改为0,否则在列中更改为1:age,url.
我的代码如下,但这是错误的.

import Pandas as pd

  df[['age','url']].applymap(lambda x: 0 if x=='NaN' else x)

我想得到以下结果:

row  id  name    age   url           
  1   e1   tom     0     1
  2   e2   john    1     0
  3   e3   lucy    0     1 
  4   e4   tick    1     0

谢谢你的帮助!

df[['age','url']] = df[['age','url']].where(df[['age','url']].isnull(),1)
                                       .fillna(0).astype(int)
print (df)

   row  id  name  age  url
0    1  e1   tom    0    1
1    2  e2  john    1    0
2    3  e3  lucy    0    1
3    4  e4  tick    1    0

numpy.whereisnull

df[['age','url']] = np.where(df[['age',1)
print (df)
   row  id  name  age  url
0    1  e1   tom    0    1
1    2  e2  john    1    0
2    3  e3  lucy    0    1
3    4  e4  tick    1    0

notnullastype最快的解决方案:

df[['age','url']].notnull().astype(int)
print (df)
   row  id  name  age  url
0    1  e1   tom    0    1
1    2  e2  john    1    0
2    3  e3  lucy    0    1
3    4  e4  tick    1    0

编辑:

我尝试修改你的解决方案:

df[['age','url']].applymap(lambda x: 0 if pd.isnull(x) else 1)
print (df)
   row  id  name  age  url
0    1  e1   tom    0    1
1    2  e2  john    1    0
2    3  e3  lucy    0    1
3    4  e4  tick    1    0

时序:

LEN(DF)= 4k的:

In [127]: %timeit df[['age','url']].applymap(lambda x: 0 if pd.isnull(x) else 1)
100 loops,best of 3: 11.2 ms per loop

In [128]: %timeit df[['age',1)
100 loops,best of 3: 2.69 ms per loop

In [129]: %timeit df[['age','url']] = np.where(pd.notnull(df[['age','url']]),1,0)
100 loops,best of 3: 2.78 ms per loop

In [131]: %timeit df.loc[:,['age','url']].notnull() * 1
1000 loops,best of 3: 1.45 ms per loop

In [136]: %timeit df[['age','url']].notnull().astype(int)
1000 loops,best of 3: 1.01 ms per loop

总结

以上是编程之家为你收集整理的Python Pandas:如果数据是NaN,则更改为0,否则在数据框中更改为1全部内容,希望文章能够帮你解决Python Pandas:如果数据是NaN,则更改为0,否则在数据框中更改为1所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶