python - 如何将“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' 。
解决方案
那是因为您的格式不正确,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]