首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在熊猫中使用正则表达式掩蔽一些nan值的列?

如何在熊猫中使用正则表达式掩蔽一些nan值的列?
EN

Stack Overflow用户
提问于 2017-07-16 05:42:46
回答 2查看 642关注 0票数 2

我有一个dataframe,它访问了一列行政区(包括许多其他专栏):

代码语言:javascript
复制
Index  User     Boroughs_visited
0      Eminem   Manhattan, Bronx
1      BrSpears NaN
2      Elvis    Brooklyn
3      Adele    Queens, Brooklyn

我想要创建第三列,显示哪个用户访问了布鲁克林,所以我用python编写了最慢的代码:

代码语言:javascript
复制
df['Brooklyn']= 0
def borough():
    for index,x in enumerate(df['Boroughs_visited']):
        if pd.isnull(x):
            continue
        elif re.search(r'\bBrooklyn\b',x):
            df_vols['Brooklyn'][index]= 1

borough()

其结果是:

代码语言:javascript
复制
Index  User     Boroughs_visited  Brooklyn
0      Eminem   Manhattan, Bronx   0
1      BrSpears NaN                0
2      Elvis    Brooklyn           1
3      Adele    Queens, Brooklyn   1

我的电脑花了15秒才运行了2000行。有更快的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-16 05:49:35

.str访问器与containsfillna一起使用

代码语言:javascript
复制
df['Brooklyn'] = (df.Boroughs_visited.str.contains('Brooklyn') * 1).fillna(0)

或同一语句的另一种格式:

代码语言:javascript
复制
df['Brooklyn'] = df.Boroughs_visited.str.contains('Brooklyn').mul(1, fill_value=0)

输出:

代码语言:javascript
复制
   Index          User  Boroughs_visited  Brooklyn
0      0        Eminem  Manhattan, Bronx         0
1      1  BrSpears NaN              None         0
2      2         Elvis          Brooklyn         1
3      3         Adele  Queens, Brooklyn         1
票数 2
EN

Stack Overflow用户

发布于 2017-07-16 06:27:43

你可以以一个的价格买到所有的行政区。

代码语言:javascript
复制
df.join(df.Boroughs_visited.str.get_dummies(sep=', '))

   Index      User  Boroughs_visited  Bronx  Brooklyn  Manhattan  Queens
0      0    Eminem  Manhattan, Bronx      1         0          1       0
1      1  BrSpears               NaN      0         0          0       0
2      2     Elvis          Brooklyn      0         1          0       0
3      3     Adele  Queens, Brooklyn      0         1          0       1

但如果你真的真的想要布鲁克林

代码语言:javascript
复制
df.join(df.Boroughs_visited.str.get_dummies(sep=', ').Brooklyn)

   Index      User  Boroughs_visited  Brooklyn
0      0    Eminem  Manhattan, Bronx         0
1      1  BrSpears               NaN         0
2      2     Elvis          Brooklyn         1
3      3     Adele  Queens, Brooklyn         1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45125441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档