从pandas数据框中的列中删除所有字母和特殊字符

时间:2018-11-21 08:29:47

标签: python regex pandas

我有一个像这样的datframe

    A   B
0   0.0 sales oi 90,90
1   1.0 9.00
2   2.0 get it here999
3   3.0 sales for oi 90,90
4   4.0 this: 90,00,00
5   5.0 akjd : 90,000

我想要这样的数据框

        A   B
0   0.0 9090
1   1.0 9
2   2.0 999
3   3.0 9090
4   4.0 900000
5   5.0 90000

2 个答案:

答案 0 :(得分:0)

如果要删除所有不带点的非数字值,请将replace与正则表达式[^\d.]一起用于非十进制数字或.的任何字符:

df['B'] = df['B'].str.replace(r'[^\d.]+', '')
print (df)
     A       B
0  0.0    9090
1  1.0    9.00
2  2.0     999
3  3.0    9090
4  4.0  900000
5  5.0   90000

答案 1 :(得分:0)

您可以使用如下正则表达式:

import re
re.sub("[^0-9]", "", "sales oi 90,90")

这将返回:

9090

使用此方法,您只需使用lambda函数即可将其应用于数据框:

df['B'] = df['B'].apply(lambda row: re.sub("[^0-9]", "", row))