我有一个具有以下值的熊猫系列:
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
熊猫工具,但没有成功。
答案 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