我在PANDAS数据框中有一个字符串列我希望substring创建一个新列。该列的一般格式为:
"THING 10MG/OTHER THING 100MG"
"THING 10MG"
"THING 10.5MG"
"THING 10.5MCG"
我需要的是正则表达式或其他模式匹配技术来提取这些结果:
"10"
"10"
"10.5"
"10.5"
结果是在MG或MCG之前第一次出现(从左侧)float或int。
到目前为止,我所得到的结果显然不完整:
df['string_field'].str.extract('(\d+)MG')
任何高效的方法或提示将不胜感激。感谢。
答案 0 :(得分:2)
答案 1 :(得分:1)
我认为您需要提取float
或int
,然后在必要时转为float
:
L = [
"THING 10MG/OTHER THING 100MG",
"7THING 10MG",
"THING 10.5MG",
"THING 10.5MCG"
]
df =pd.DataFrame({'string_field':L})
print (df)
string_field
0 THING 10MG/OTHER THING 100MG
1 7THING 10MG
2 THING 10.5MG
3 THING 10.5MCG
print (df['string_field'].str.extract('(\d*\.\d+|\d+)MC?G', expand=False).astype(float))
0 10.0
1 10.0
2 10.5
3 10.5
Name: string_field, dtype: float64