有一个“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'。
答案 0 :(得分:2)
那是因为你的格式不对,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]
答案 1 :(得分:1)
您可以使用:
>>pd.to_datetime('19501210', yearfirst=True)
Timestamp('1950-12-10 00:00:00')
很简单(因为你说所有的日子都是零):
>>pd.to_datetime('19501200', format='%Y%m00')
Timestamp('1950-12-01 00:00:00')