急速抽取数据帧中“hi”后面单词的方法?

2024-06-26 14:01:25 发布

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

我的数据如下:

a=pd.DataFrame({'aa':['hi asf afe','hi a fefe','hi fefavfv av'],
               'b':['faef af af  asf fef','1 1 1','greg fd']})

我想要的是从aa列中提取“hi”之后的单词(可能是一个名称)。这是我的方法:

import re
def myTry(Str):
    g=re.search('hi (.*?) ',Str)
    return g.group(1)

a.loc[:,'Try']=a.apply(lambda x: myTry(x['aa']),axis=1)

结果是正确的。但我必须在这里定义一个函数。我想知道是否有一个简单的方法来做到这一点?谢谢


Tags: 数据方法redataframehiaapdaf
2条回答

使用str.extract如下:

a.aa.str.extract(r'hi +\b(\w+)\b')

Out[133]:
         0
0      asf
1        a
2  fefavfv

如果你坚持使用str.split。一个简单的默认拆分和拾取第二个元素就足够了

a.aa.str.split().str[1]

Out[134]:
0        asf
1          a
2    fefavfv
Name: aa, dtype: object

试试这个:

a=pd.DataFrame({'aa':['hi asf afe','hi a fefe','hi fefavfv av'],
               'b':['faef af af  asf fef','1 1 1','greg fd']})
#a['bb'] = a['aa'].str.split('hi').str.get(1).str.strip()
# To keep first word after 'hi'
a['bb'] = a['aa'].str.split('hi').str.get(1).str.strip().str.split(' ').str.get(0)
a

输出:


        aa          b                   bb
0   hi asf afe  faef af af asf fef      asf
1   hi a fefe   1 1 1                     a
2   hi fefavfv av   greg fd         fefavfv

相关问题 更多 >