如何替换2个字符之间的特定字符?

时间:2019-06-14 07:27:43

标签: regex python-3.x pandas

我有一个具有以下值的熊猫系列:

import pandas as pd
input_series = pd.Series(['9009.00', '909.99', '9999.00', '9000.00', '900900900.00', '9900.09'])

我想生成一个看起来像这样的系列:

预期系列

9999.00
999.99
9999.00
9000.00
999999900.00
9999.99

任务是替换出现在两个九的(9)之间的所有零(0)。 我曾尝试使用str.replace熊猫工具,但没有成功。

2 个答案:

答案 0 :(得分:3)

>>> input_series = pd.Series(['9009.00', '909.99', '9999.00', '9000.00', '900900900.00'])
>>> 
>>> df = pd.DataFrame()
>>> df['input'] = input_series
>>> df['extract'] = df['input'].str.extract('(9[09]+9)').fillna('')
>>> df['out'] = df.apply(lambda x: x['input'].replace(x['extract'], x['extract'].replace('0', '9')), axis=1)
>>> df
          input  extract           out
0       9009.00     9009       9999.00
1        909.99      909        999.99
2       9999.00     9999       9999.00
3       9000.00                9000.00
4  900900900.00  9009009  999999900.00

PS

对于添加的新案例,即“ 9900.09”到“ 9999.99”

将正则表达式更新为(9 [09。] + 9)

答案 1 :(得分:3)

使用自定义功能,先查找9的{​​{1}},再查找find的最后9,然后仅替换以下子内容:

rfind