You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python/Pandas将YYYY-YY格式识别为时间区间?

处理NBA赛季YYYY-YY格式的时间转换方案

针对NBA跨年度赛季的格式(如1999-00),不需要依赖字符串切片反复处理,用Pandas的Period类型可以完美实现时间范围查询需求——Period本身代表一个连续时间区间,刚好匹配赛季的属性。

方法1:转换为赛季结束年份的年度Period

NBA赛季通常从当年10月持续到次年6月,大部分官方统计会以赛季结束年份作为核心标识(比如2019-20赛季的冠军归属会记在2020年)。我们可以直接将YYYY-YY格式转换为结束年份的年度Period:

import pandas as pd
import numpy as np

test_df = pd.DataFrame(data={'Season':['1996-97', '1997-98', '1998-99', 
'1999-00', '2000-01', '2001-02',
'2002-03','2003-04','2004-05', 
'2005-06','2006-07','2007-08', 
'2008-09', '2009-10', '2010-11', '2011-12'],
'Height':np.random.randint(20, size=16), 
'Weight':np.random.randint(40, size=16)}) 

# 转换Season为结束年份的年度Period
test_df['Season_Period'] = test_df['Season'].apply(
    lambda x: pd.Period(f"{int(x.split('-')[0]) + 1}", freq='A')
)

转换后,Season_Period列的每个值都是代表赛季结束年份的年度周期,比如1999-00会变成Period('2000', 'A')。

时间范围查询示例

比如要查询2016至2020年期间的赛季(对应2015-16到2019-20赛季):

# 筛选结束年份在2016到2020之间的赛季
filtered_df = test_df[(test_df['Season_Period'] >= pd.Period('2016', 'A')) & 
                      (test_df['Season_Period'] <= pd.Period('2020', 'A'))]

方法2:转换为赛季起止日期的精确Period范围

如果需要区分全明星赛、季后赛这类具体时间节点的查询,可以将赛季转换为包含精确起止日期的Period:

# 转换为赛季起止日的Period
test_df['Season_Start'] = test_df['Season'].apply(
    lambda x: pd.Period(f"{int(x.split('-')[0])}-10-01", freq='D')
)
test_df['Season_End'] = test_df['Season'].apply(
    lambda x: pd.Period(f"{int(x.split('-')[0])+1}-06-30", freq='D')
)

精确时间范围查询示例

比如查询1999年全明星赛(假设在2000年2月)到2001年季后赛(假设在2001年5月)期间的赛事数据:

target_start = pd.Period('2000-02-01', freq='D')
target_end = pd.Period('2001-05-31', freq='D')

# 筛选覆盖目标时间区间的赛季
filtered_df = test_df[(test_df['Season_Start'] <= target_end) & 
                      (test_df['Season_End'] >= target_start)]

为什么不用字符串切片?

用Period类型的核心优势:

  • 原生支持时间比较、范围筛选,不用手动处理字符串拼接/拆分的冗余逻辑
  • 可以直接结合Pandas的时间序列工具(如resample、rolling)做复杂统计
  • 语义更清晰,Period('2000', 'A')直接对应1999-00赛季的结束年度,比字符串'1999-00'更直观

内容的提问来源于stack exchange,提问作者felipedmc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:33:22