我的数据就像:
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)
结果正确。但是我必须在这里定义一个函数。我想知道是否有一个简单的方法来做到这一点?谢谢
答案 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