Skip to main content
 首页 » 编程设计

python之从一系列 Pandas 时间戳中提取月份的最快方法

2025年05月04日32jiqing9006

我有一个非常大的 pandas DataFrame(大约 7000 万条记录),其中一个日期列包含 pandas Timestamps。我需要这些中的月份和年份,但我发现提取这些的天真方法非常慢。

这是一个小例子,在我的机器上大约需要半秒钟。我的实际问题要大得多,时间戳不是均匀间隔的。

ser = pd.Series(pd.date_range('1799-01-01','2100-12-01')) 
 
%timeit [x.month for x in ser] 
#1 loops, best of 3: 558 ms per loop 

我希望有一种方法可以转换为 DateTimeIndex 或可以快速提取月份和年份的方法,而这本身不会永远持续下去。

请您参考如下方法:

您可以使用 dt类日期时间系列的访问器:

ser = pd.Series(pd.date_range('1799-01-01','2100-12-01')) 
print ser.dt.month 
# [ 1  1  1 ..., 11 11 12] 
%timeit ser.dt.month 
# 100 loops, best of 3: 14.7 ms per loop 

手动循环方法:

%timeit [x.month for x in ser] 
1 loops, best of 3: 389 ms per loop