首页 > 解决方案 > 如何将“int64”类型的列转换为日期时间?

问题描述

有一个“x”列(int64),其中仅显示年和月,所有天都显示为“00”。(例如:19501200,19541100,19590300...)

经过几次尝试,我遇到了一个问题,所有值都被转换为缺失值。

我该如何解决?

df['x'] = df['x'].astype(str)
df['x'] = pd.to_datetime(df['x'], format='%Y%m%d', errors='coerce')

输出

所有值都更改为'NaT'。

df['x'] = df['x'].astype(str)
df['x'] = df['x'].str[:6]
df['x'] = pd.to_datetime(df['x'], format='%Y%m', errors='coerce')

输出

所有值都更改为'NaT'。

预期的

转换为仅显示年份和月份的日期时间,例如 '195012' 、 '195411' 和 '195903' 。

标签: pythonpandasdatetime

解决方案


那是因为您的格式不正确,00不是有效日期,所以忽略它,直接传递00而不是%d,也不需要类型转换str

df['x'] = pd.to_datetime(df['x'], format='%Y%m00', errors='coerce')

0   1950-12-01
1   1954-11-01
2   1959-03-01
Name: x, dtype: datetime64[ns]

推荐阅读