Python Pandas – Datetime 仅在某些日期给出错误的输出
python 278
原文标题 :Python Pandas – Datetime gives wrong output only for certain dates
我有一个数据框,其中有一列日期为 MMDDYYY 格式。我想将日期转换为 YYYY-MM-DD 格式。这适用于大多数日期。但是对于从 1 开始的日期,会给出错误的输出。在此示例中,最后 3 行是错误的。有很多行,所以我无法硬编码正确的值。
OriginalDates (MMDDYYYY) OutputDates (YYYYMMDD) ExpectedDates (YYYYMMDD) Correct Output?
5011989 1989-05-01 1989-05-01 Yes
6011989 1989-06-01 1989-06-01 Yes
12042009 2009-12-04 2009-12-04 Yes
01012001 2001-01-01 2001-01-01 Yes
1161955 1955-11-06 1955-01-16 No
1051991 1991-10-05 1991-01-05 No
1011933 1933-10-01 1933-01-01 No
我的代码:
df['OutputDates'] = pd.to_datetime(df['OriginalDates'], format='%m%d%Y')
df['OutputDates'] = pd.to_datetime(df['OutputDates'], format='%Y-%m-%d')
回复
我来回复-
Ibrahim Ayoup 评论
您可以使用字符串切片,而不是最干净的解决方案,但它可以满足您的要求:
def format_date(x): if len(x) == 7: return x[-4:] + '-' + x[-6:3] + '-' + x[-8:1] if len(x) == 8: return(x[-4:] + '-' + x[2:4] + '-' + x[0:2]) df['OriginalDates (MMDDYYYY)'] = df['OriginalDates (MMDDYYYY)'].apply(lambda x: format_date(str(x))) df['OriginalDates (MMDDYYYY)'] = pd.to_datetime(df['OriginalDates (MMDDYYYY)'], format='%Y-%d-%m')
2年前