如何使用pandas中的正则表达式用一些nan值屏蔽列?

2024-04-24 00:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,其中有一列访问过的自治区(在许多其他列中):

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

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

^{pr2}$

导致:

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行。有没有更快的方法?


Tags: dataframeindexnanqueenselvisusermanhattan自治区
2条回答

你只需花一个市镇的钱就可以得到所有的行政区

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

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

^{pr2}$

让我们将.str访问器与containsfillna一起使用:

df['Brooklyn'] = (df.Boroughs_visited.str.contains('Brooklyn') * 1).fillna(0)

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

^{pr2}$

输出:

   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

相关问题 更多 >