从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数据类型。