【发布时间】:2020-06-08 21:46:41
【问题描述】:
我想修复 pandas 系列中的一些字符串条目,这样所有模式为“0x.202”(缺少年份的最后一位)的值都将在末尾附加一个零(这样它就是完整的日期格式为“mm.yyyy”)。这是我得到的模式:
pattern = '\d*\.202(?:$|\W)'
精确匹配以点分隔的 2 位数字,最后精确匹配 202。能否请您帮助我如何在保留原始索引的同时替换串联字符串?
我目前的做法是:
date = df['Calendar Year/Month'].astype('str')
pattern = re.compile('\d*\.202(?:$|\W)')
date.str.replace(pattern, pattern.pattern + '0', regex=True)
但我得到一个错误:
error: bad escape \d at position 0
编辑:抱歉缺少细节,我忘了提到日期被 pandas 误解为浮点数,这就是为什么没有完全显示 2020 年的日期(例如,5.2020 舍入为 5.202)。所以我使用的表达方式:
date = df['Year/Month'].astype('str')
date = date.apply(lambda _: _ if _[-1] == '1' or _[-1] == '9' else f'{_}0')
因此只有“xx.202”被编辑,“xx.2021”和“xx.2019”等日期被省略。谢谢大家的帮助!
【问题讨论】:
-
也许
re.compile(r'\d*\.202(?:$|\W)')? -
感谢您的关注,但还是同样的错误
标签: python database pandas python-re