关于数字的正则表达式-python
我是新来的regex,我需要一些帮助。我有一个数据框,其中有一列带有amount,在大多数情况下类似于869850.0,我只需要数字以950.00或999.00结尾的行,我不需要类似于999.1的行。我没有想到如何在pandas中归档这些值关于数字的正则表达式-python,python,regex,pandas,Python,Regex,Pandas,我是新来的regex,我需要一些帮助。我有一个数据框,其中有一列带有amount,在大多数情况下类似于869850.0,我只需要数字以950.00或999.00结尾的行,我不需要类似于999.1的行。我没有想到如何在pandas中归档这些值 所以我试着用正则表达式匹配,因为我是新手,所以我只知道如何得到数字单位。类似于[^.]*。但是我不知道如何应用if和如何继续,有人能帮我吗?如果你想使用regex,请尝试以下方法: [0-9]{3}\.0{2} 它将首先匹配3个数字,然后匹配点(.),然后
所以我试着用正则表达式匹配,因为我是新手,所以我只知道如何得到数字单位。类似于[^.]*。但是我不知道如何应用if和如何继续,有人能帮我吗?如果你想使用regex,请尝试以下方法:
[0-9]{3}\.0{2}
它将首先匹配3个数字,然后匹配点(.),然后匹配2个0。我希望这个正则表达式足够容易理解和调整
您可以在此处尝试正则表达式:
使用(%
)代替正则表达式。它将给你除法后的余数,如果给10的幂,它可以用来得到一个数字的“尾”。这条尾巴可以根据你的情况检查
在您的情况下,除以1000的余数就是您要查找的余数,请参见下面的示例:
import pandas as pd
s = pd.Series([
1950.,
1012950.,
2999.,
1950.1,
])
s % 1000
# Returns
# 950.
# 950.
# 999.
# 950.1
(s % 1000).isin([999., 950.]) # allowed values
# Returns
# True
# True
# True
# False
s[(s % 1000).isin([999., 950.])]
# Returns
# 1950.
# 1012950.
# 2999.
# Not: 1950.1, because 950.1 is not in [999., 950.]
您也可以尝试以下方法:
df = pd.DataFrame({'a': ['850890.0', '850999.0', '850990.0', '850995.0']})
print(df)
a
0 850890.0
1 850999.0
2 850990.0
3 850950.0
#create a regex to find all numbers
numbers = ['999.0', '950.0']
#now put these values in a pattern
pattern = r'(?:{})'.format('|'.join(numbers))
pattern
'(?:999.0|950.0)'
dfnew = df['a'].str.findall(pattern).apply(''.join,1)
print(dfnew)
0
1 999.0
2
3 950.0
Name: a, dtype: object
你能给我们看一些代码吗?试试这个:^[0-9]+(\.0+)$我认为没有小数的数字也是可以接受的。