使用panda从字符串中删除了不需要的字符



我有以下数据帧:

df = pd.DataFrame({'A': ['2.5cm','2.5cm','2.56”','1.38”','2.2”','0.8 in','$18.00','4','2"']})

看起来像:

A
2.5cm
2.5cm
2.56”
1.38”
2.2”
0.8 in
$18.00
4
2"

我想删除除小数点以外的所有字符。

输出应为:

A
2.5
2.5
2.56
1.38
2.2
0.8
18.00
4
2

以下是我尝试过的:

df['A'] = df.A.str.replace(r"[a-zA-Z]", '')
df['A'] = df.A.str.replace('W', '')

但这是去掉所有的东西,包括小数点。

如有任何建议,我们将不胜感激。

提前感谢

您可以使用str.extract仅提取浮点:

df['A'] = df['A'].astype(str).str.extract(r'(d+.d+|d)').astype('float')

但是,这里的'.'匹配任何字符,而不仅仅是句点。因此它将匹配18,00而不是18。它也无法提取多位数的整数。使用下面的代码。(感谢@DYZ(:

df['A'] = df['A'].astype(str).str.extract(r'(d+.d+|d+)').astype('float')

输出:

A
0   2.50
1   2.50
2   2.56
3   1.38
4   2.20
5   0.80
6  18.00
7   4.00
8   2.00

试用str.extract

df['new'] = df.A.str.extract('(d*.d+|d+)').astype(float).iloc[:,0]
Out[31]: 
0
0   2.50
1   2.50
2   2.56
3   1.38
4   2.20
5   0.80
6  18.00

最新更新