Data Analysis

Pandas日期列中高效提取年和月

Spread the love

从Pandas的datetime列中提取年份和月份是一项常见任务。本文探讨了三种高效的方法,比较了它们的优缺点,以帮助您选择最适合您需求的方法。

目录

使用.dt访问器

.dt访问器提供了一种直接且高效的提取日期时间组件的方法。由于其可读性和简洁性,它通常是首选方法。


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month

print(df)

这段代码将输出:


         date  year  month
0 2024-03-15  2024      3
1 2023-11-20  2023     11
2 2024-05-10  2024      5

利用strftime()方法

strftime()方法提供了更大的灵活性,允许您自定义输出格式。当您需要特定年份和月份的字符串表示用于报告或其他目的时,这尤其有用。


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.strftime('%Y')
df['month'] = df['date'].dt.strftime('%m') # 使用'%b'表示月份缩写,'%B'表示完整月份名称

print(df)

这将产生:


         date  year month
0 2024-03-15  2024   03
1 2023-11-20  2023   11
2 2024-05-10  2024   05

请记住查阅Python的strftime()文档以获取完整的格式代码列表。

使用DatetimeIndex直接访问

如果您的“date”列已经是DatetimeIndex,您可以直接访问年份和月份属性。虽然不太常见,但如果您的数据已经是这种格式,这可能会很有效率。


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

date_index = pd.DatetimeIndex(df['date'])
df['year'] = date_index.year
df['month'] = date_index.month

print(df)

这将产生与第一个示例相同的输出。但是,除非您已经在使用DatetimeIndex对象,否则通常不推荐此方法。

结论:对于大多数场景,.dt访问器提供了最简洁高效的方法。strftime()提供了更大的格式控制,而直接DatetimeIndex访问则取决于具体情况。选择最符合您的需求和编码风格的方法。如有必要,请始终使用pd.to_datetime()确保您的“date”列为datetime数据类型。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注