我想从此字符串中提取" iPhone"部分。但是,在数据框架中的1000列中,我在" Twitter for iPhone"的位置有不同的值。我只需要">"one_answers"<"之前的值。从以下一组字符串。
我尝试了df.col.str.Extract('('(iPhone | twitter for samsung for shothers for ershots for twitter(('(('(仅提取这些" twitter for iPhone"值,但没有提取其他'twitter,其余的则填充了NANS。
实现 @cmmcd的评论,此代码:
import pandas as pd
a = ["""<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>""",
"""<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for Cats</a>"""
]
df = pd.DataFrame(a,columns=['WebLinks'])
df['WebLinks'].str.extract(r">(.*?)<")
返回此结果:
0 Twitter for iPhone
1 Twitter for Cats
发生的事情是r">(.*?)<"
的意思是"将图案的正则符合匹配的截止标签(>
(和打开标签(<
(匹配的任何内容"。我不建议您摆脱这种方法的标签。
如果这不起作用,您可以发布给您nans
的代码吗?
尝试df.col.str.extract(pat = '(Twitter for (iPhone|Samsung|others))')
您可以将col.str.split()
与Regex模式r'<|>'
一起使用,以获取列中的元素列表并选择所需的元素(请注意,假设整个数据元素是提供的字符串((
twits=['<a href=”http://twitter.com/download/iphone“ rel=”nofollow“>Twitter for iPhone</a>',
'<a href=”http://twitter.com/download/iphone“ rel=”nofollow“>Twitter for Samsung</a>',
'<a href=”http://twitter.com/download/iphone“ rel=”nofollow“>Twitter for Others</a>']
ser=pd.Series([np.random.choice(twits,1)[0] for i in range(10)])
ser.str.split(r'<|>').str[2]
0 Twitter for Samsung
1 Twitter for iPhone
2 Twitter for iPhone
3 Twitter for Others
4 Twitter for iPhone
5 Twitter for Others
6 Twitter for Others
7 Twitter for Samsung
8 Twitter for iPhone
9 Twitter for Others