Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式从字符串列中删除小数和非数字_Python_Regex_Pandas - Fatal编程技术网

Python 使用正则表达式从字符串列中删除小数和非数字

Python 使用正则表达式从字符串列中删除小数和非数字,python,regex,pandas,Python,Regex,Pandas,我有一个dataframe列,其字符串如下: df.column1: 0 R$ 27.467.522,00 (Vinte e sete milhões, quatro... 1 NaN 2 R$ 35.314.312,12 (Trinta e cinco milhões, trezentos... 3 R$ 1.231,34 (Mil duzentos e trinta e um reais e... df.column1: 0 27467522 1 NaN 2 35314312 3 1231

我有一个dataframe列,其字符串如下:

df.column1:
0 R$ 27.467.522,00 (Vinte e sete milhões, quatro...
1 NaN
2 R$ 35.314.312,12 (Trinta e cinco milhões, trezentos...
3 R$ 1.231,34 (Mil duzentos e trinta e um reais e...
df.column1:
0 27467522
1 NaN
2 35314312
3 1231
我只想得到数字,不考虑小数,所以看起来是这样的:

df.column1:
0 R$ 27.467.522,00 (Vinte e sete milhões, quatro...
1 NaN
2 R$ 35.314.312,12 (Trinta e cinco milhões, trezentos...
3 R$ 1.231,34 (Mil duzentos e trinta e um reais e...
df.column1:
0 27467522
1 NaN
2 35314312
3 1231
我正试图用正则表达式做到这一点:

df['column1']=df['column1'].str.extract('[REGEX CODE]')
但是我不习惯正则表达式。我尝试了以下解决方案:

df['column1']=df['column1'].str.extract('(.*?,)').str.extract('(\d+)')
df['column1']=df['column1'].str.extract('(\s*,.*)').str.extract('(\d+)')
但我没能把它做好。
有人能帮忙吗?

使用
str.replace
然后
str.extract

df.column1.str.replace('.', '').str.extract(r'(\d+)')

          0
0  27467522
1       NaN
2  35314312
3      1231

小数在这里用逗号表示,因此通过替换句点并使用extract查找第一个匹配项,数字将被匹配,忽略小数。

使用
str.replace
然后
str.extract

df.column1.str.replace('.', '').str.extract(r'(\d+)')

          0
0  27467522
1       NaN
2  35314312
3      1231

小数在这里用逗号表示,因此通过替换句点并使用extract查找第一个匹配项,数字将匹配,忽略小数。

感谢您的努力,但这并不重要。我们将以这种方式保留小数。您能解释一下吗?在我看来,这似乎符合你想要的输出。对不起,你是正确的,我的困惑在这里。我不知道你是如何做到这一点的,但它工作得很好如果你想保留小数,请将正则表达式改为
r'(\d+(,\d+)
)。这样,它可以覆盖整数和小数。之后,您可以将“,”替换为“.”谢谢您的努力,但这并没有用,朋友。我们将以这种方式保留小数,您能解释一下吗?在我看来,这似乎符合你想要的输出。对不起,你是正确的,我的困惑在这里。我不知道你是如何做到这一点的,但它工作得很好如果你想保留小数,请将正则表达式改为
r'(\d+(,\d+)
)。这样,它可以覆盖整数和小数。之后,您可以将“”替换为“”