首页 > 解决方案 > 仅用日期组件替换 pandas 列中的混合字符串/日期值

问题描述

我有一个包含字符串和日期信息的 pandas df 列。我想只用日期信息替换此列。我想我可以将 df.replace() 函数与 regex=True 选项一起使用,但我真的不知道该怎么做。我尝试了几种方法,但似乎无法弄清楚逻辑。任何和所有的帮助将不胜感激!

以下是列中找到的值的示例:

DATE_COLUMN

Foo 11-2008 酒吧

嘻哈 12-2008 跳

some_text 01-2009 some_more_text

我只想用 MM-YYYY 数据替换上述单元格。

我还有另一个具有类似模式的 df (但如果我能理解如何解决上述问题,我想我将能够弄清楚这个):

DATE_COLUMN

Foo 12-2007 至 11-2008 酒吧

臀部 01-2008 至 12-2008 跳跃

Some_text 02-2008 至 01-2009 some_more_text

在这种情况下,我只想用第二个 MM-YYYY 元素替换每个单元格。

再次,非常感谢任何和所有的帮助。谢谢!

标签: pythonpandasreplace

解决方案


to_datetime使用清理数据的内置格式提取str.extract

df['date'] = df['date'].str.extract(r'.*(\d\d-\d\d\d\d)')
df["date"] = pd.to_datetime(df["date"], format="%m-%Y")

.*则表达式中的 将通过仅保留最后一次出现来处理双日期。


推荐阅读