提取,并在大熊猫数据框中使用正则表达式替换子
问题描述:
我有这样的:提取,并在大熊猫数据框中使用正则表达式替换子
Title
Num
0 <span class="o-label--tiny">VALEUR ÉNERGÉTIQUE</span>
1 <span class="o-label--tiny">PROTÉINES</span>
2 <span class="o-label--tiny">GLUCIDES</span>
<class 'pandas.core.frame.DataFrame'> Num Index(['Title'], dtype='object')
这就是我想要的:
Title
Num
0 VALEUR ÉNERGÉTIQUE
1 PROTÉINES
2 GLUCIDES
这是我公司开发的正则表达式:
(<span class=\"o-label--tiny\">)([a-zA-Z]+\s*\w*)(</span>)
测试它我看到它匹配整个初始字符串,并为不同的子字符串组。最后,我希望组(2)在我的数据框列中。 (我下面的例子显示了明确的正则表达式,但我也尝试了re.compile结果,它不能使我得到最终结果)。
这是我曾尝试:
df['Title'] = df['Title'].replace({'<span class=\"o-label--tiny\">': ''}, inplace=True, regex=True)
结果:
Title
Num
0 None
1 None
2 None
尝试号码2:
df['Title'] = df['Title'].str.replace('<span class=\"o-label--tiny\">', repl = '')
结果数2:
Title
Num
0 NaN
1 NaN
2 NaN
尝试号码3:
df['Title'] = df[lambda df: df.columns[0]].str.extract('(>[a-zA-Z]+\s*\w*)', expand=False)
结果3:
Title
Num
0 NaN
1 NaN
2 NaN
我真的不明白我做错了任何让我期望的结果帮助将不胜感激。谢谢!
答
使用str.extract
:
df['Title']=df['Title'].str.extract('<span class=\"o-label--tiny\">(.*)</span>',expand=False)
print (df)
Title
Num
0 VALEUR ÉNERGÉTIQUE
1 PROTÉINES
2 GLUCIDES
如果可能的不同tag
S或class
ES:
df['Title'] = df['Title'].str.extract('>(.*)<',expand=False)
print (df)
Title
Num
0 VALEUR ÉNERGÉTIQUE
1 PROTÉINES
2 GLUCIDES
答
正则表达式
我不想在DF东西进入,但我希望这很有用:
import re
stringa = """
0 <span class="o-label--tiny">VALEUR ÉNERGÉTIQUE</span>
1 <span class="o-label--tiny">PROTÉINES</span>
2 <span class="o-label--tiny">GLUCIDES</span>
"""
pattern1 = "[0-9]"
pattern = ">(.*)<"
found = re.findall(pattern1, stringa)
found2 = re.findall(pattern, stringa)
for f in range(len(found)):
print(found[f] + " " + found2[f])
输出
0 VALEUR ÉNERGÉTIQUE
1 PROTÉINES
2 GLUCIDES
您已经发布的答案? – Dark
我刚刚将此添加为评论。你编辑它。我删除我的回答 – Dark
@jezrael:我试过你的代码,但都没有为我工作。我仍然拿到NaN而不是正确的字符串。 ?? – ChiChi