对Pandas中的特定列应用正则表达式

2024-09-30 20:18:15 发布

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

我有一个包含tweetID、tweettext、RegExp1、RegExp2、RegExp3、RegExp4列的数据集,以及一个包含4个正则表达式的列表。 我想在tweet text列上逐个应用正则表达式,如果tweet text满足正则表达式,那么我想在相应的RegExp列中设置值为1,如果不满足,我就把它设置为0。在

例如,假设tweet文本满足正则表达式编号1,那么我想将相应的RegExp1列的值设置为1,而不满足正则表达式2,那么我希望将相应的RegExp2列的值设置为0,依此类推。我试过最后给出的代码,但没用。在

我的数据集看起来像

tweetID | tweet-text         | RegExp1 | RexExp2 | RegExp3 | RexExp4
---------------------------------------------------------------------
10001   | to get it or?      |         |         |         |
10333   | I just wonder :)   |         |         |         |
10933   | is it possible dude|         |         |         |
14633   | he is good at      |         |         |         |

代码:

^{pr2}$

(最好使用熊猫)谢谢


Tags: 数据代码text文本列表isittweet
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:15

您可以在循环中使用str.contains。您需要传递regex模式(而不是编译的regex对象)。在

这就是我要说的:

In [1062]: df.head()
Out[1062]: 
   tweetID            tweet-text    RegExp1    RegExp2    RegExp3 RegExp4
0    10001   to get it or?                                               
1    10333   I just wonder :)                                            
2    10933   is it possible dude                                         
3    14633   he is good at 

In [1063]: regexes = [
      ...:     'i asked .* said',
      ...:     'you asked me what .*',
      ...:     '(?:to get|to see|to look|is it true|is it possible) .*',
      ...:     'I .* wonder .*'
      ...: ]

接下来,为每个regex模式运行一个循环。调用str.contains并依次将结果分配给每个列:

^{pr2}$

相关问题 更多 >