gpt4 book ai didi

python - 仅在 Pandas 中将不规则日期格式转换为年份

转载 作者:行者123 更新时间:2023-12-03 05:21:37 24 4
gpt4 key购买 nike

我正在使用的数据框有一个日期列,日期格式不规则,即:

          date
0 1991
1 1970
2 1991/01/01
3 1996-01-01
4 1996-06-30
5 1995-12-31
6 1997-01-01
7 1970/1/1
8 1996-01-01
9 1997-01-01
10 1996-01-01

如何从 date 中仅提取年份,以获得标准格式 XXXX 的新列 year,仅代表年份。

          year
0 1991
1 1970
2 1991
3 1996
4 1996
5 1995
6 1997
7 1970
8 1996
9 1997
10 1996

使用df.date.unique(),我得到以下输出:

array([2015, 2008, 2021, 1999, 2001, 2000, 1997, 1995, 1998,
datetime.datetime(1905, 7, 2, 0, 0),
datetime.datetime(1905, 7, 7, 0, 0),
datetime.datetime(2012, 10, 1, 0, 0),
datetime.datetime(2010, 8, 1, 0, 0),
datetime.datetime(2009, 1, 1, 0, 0), '2019', 1992, ...], dtype=object)

我使用以下代码,但是此列中仅缺少年份日期:

df['date'] = pd.to_datetime(df['date'], errors='coerce').astype(str).replace("NaT", "")
df['year'] = pd.to_datetime(df['date']).dt.year
# df['year'] = pd.to_datetime(df['date']).dt.to_period('Y')

有人可以帮助我吗?谢谢。

最佳答案

在示例数据中,所有日期时间都已正确解析,因此添加了 Series.dt.year :

df['year'] = pd.to_datetime(df['date'], errors='coerce').dt.year

另一个想法是将值转换为字符串并使用 Series.str.extract对于长度为 4 的整数:

df['year'] = df['date'].astype(str).str.extract('(\d{4})').astype(int)

print (df)
date year
0 1991 1991
1 1970 1970
2 1991/01/01 1991
3 1996-01-01 1996
4 1996-06-30 1996
5 1995-12-31 1995
6 1997-01-01 1997
7 1970/1/1 1970
8 1996-01-01 1996
9 1997-01-01 1997
10 1996-01-01 1996

关于python - 仅在 Pandas 中将不规则日期格式转换为年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59101883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com