有没有一种快速的方法来从数据框中的列中提取“ hi”后的单词?

时间:2019-08-12 03:17:54

标签: python string pandas dataframe

我的数据就像:

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)

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

2 个答案:

答案 0 :(得分:1)

按如下方式使用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

答案 1 :(得分:0)

尝试一下:

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