【发布时间】:2020-01-11 13:04:38
【问题描述】:
我有一个包含日期列的 Pandas 数据框。日期由格式为 mm/dd/yyyy 的字符串表示。
但是我有一个问题,当天的格式:直到一个月的第 9 天的日期格式为 mm/d/yyyy。例如,2008 年 12 月 1 日显示为 2008 年 12 月 1 日。到月底的第 10 天显示为 mm/dd/yyyy。例如,2008 年 12 月 17 日用 12/17/2008 表示。
我的目标是将所有日期转换为mm.dd.yyyy的形式。可以将上述示例表示为:12.01.2008 和 12.17.2008
我的想法是把日、月、年写成单独的列,然后以 mm.dd.yyyy 格式连接字符串
到目前为止,我已尝试仅通过字符串 中的位置来提取年份和月份(参见下面的代码和示例)。但这不适用于日期,因为有两种情况:日期有一位数或两位数。
我的想法是只使用一个正则表达式基本上是这样的反斜杠一个或两个数字和一个反斜杠。但我不知道如何将其表达为正则表达式。
或者有没有更简单的完全不同的方法?
提前感谢您的帮助!我确信有一种方法可以使用正则表达式来做到这一点。但我也很感谢完全不同的方法。
import pandas as pd
# example data frame with dates in the format mm/d/yyyy and mm/dd/yyyy
df = pd.DataFrame({'date' : ['12/1/2008','12/5/2008','12/10/2008','12/17/2008']})
# withdraw month
df['month'] = df['date'].str[:2]
# withdraw year
df['year'] = df['date'].str[-4:]
# withdraw day - this is my problem
df[day] = df['day'] = df['date'].str.extract(r'[\]\d*')
# generate string with dates in the format mm/dd/yyyy
df['date_new'] = df['month'] + '.' df['day'] + '.' + df['year']
从 df['day'] 的代码中,我得到以下错误:error: unterminated character set at position 0
【问题讨论】:
-
我认为最简单的解决方案是
pd.to_datetime(df['date'])。它会正确解析该格式,并且使用datetimedtype 您的生活可能会变得更轻松。 -
这就是问题的答案(见接受的答案)!谢谢。