我在列 A:
中有以下文字A
hellothere_3.43
hellothere_3.9
我想仅将数字提取到另一个新列B(A旁边),例如:
B
3.43
3.9
我使用:str.extract('(\d.\d\d)', expand=True)
但此只复制 3.43(即确切的位数)。有没有办法让它更通用?
非常感谢!
答案 0 :(得分:2)
使用Regex。
<强>实施例强>
import pandas as pd
df = pd.DataFrame({"A": ["hellothere_3.43", "hellothere_3.9"]})
df["B"] = df["A"].str.extract("(\d*\.?\d+)", expand=True)
print(df)
<强>输出:强>
A B
0 hellothere_3.43 3.43
1 hellothere_3.9 3.9
答案 1 :(得分:0)
我认为字符串拆分和应用lambda非常干净。
import pandas as pd
df = pd.DataFrame({"A": ["hellothere_3.43", "hellothere_3.9"]})
df["B"] = df['A'].str.split('_').apply(lambda x: float(x[1]))
我没有做过任何适当的比较,但它似乎比小测试的正则表达式解决方案更快。