我的dataframe列由以下内容组成:
df['Year] = [2025, 2024, NaN, 2023, 2026, NaN] (这些是float64类型)
如何将这些年转换为日期时间格式的内容?由于不包括几个月或几天,我觉得默认情况下它们必须输出为[01-01-2025, 01-01-2021, NaT, 01-01-2023, 01-01-2026, NaT]。
但是,如果有一种方法仍然保留列为[2025, 2024, NaT, 2023, 2026, NaT],那么这也会很好。
使用df['Year'] = pd.DatetimeIndex(df['Year']).year只输出[1970, 1970, NaN, 1970, 1970, NaN]。
非常感谢。
发布于 2022-07-21 17:18:56
你可以使用熊猫的to_datetime()和设置errors='coerce'来照顾NaNs (-> NaT)
df['Year'] = pd.to_datetime(df['Year'], format='%Y', errors='coerce')输出将类似于01-01-2025, 01-01-2021 ...
发布于 2022-07-21 17:03:36
可能不是最优雅的解决方案,但如果将列转换为字符串,并使用虚拟年份(比如1900)填充空,则可以使用dateutil中的解析器。
from dateutil import parser
('01/01/'+df['year']).fillna('1900').apply(parser.parse)Out67
0 2025-01-01
1 2024-01-01
2 1900-07-21
3 2023-01-01
4 2026-01-01
5 1900-07-21https://stackoverflow.com/questions/73069965
复制相似问题