python pandas将文本中的数字提取到新列

时间:2018-06-13 06:04:55

标签: python pandas extract

我在 A:

中有以下文字
A   
hellothere_3.43  
hellothere_3.9

我想仅将数字提取到另一个新列B(A旁边),例如:

B                      
3.43   
3.9

我使用:str.extract('(\d.\d\d)', expand=True)但此只复制 3.43(即确切的位数)。有没有办法让它更通用?

非常感谢!

2 个答案:

答案 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]))

我没有做过任何适当的比较,但它似乎比小测试的正则表达式解决方案更快。