我有一个 Pandas 数据框,其设置如下:
Code StartDate EndDate
A 2024-07-01 2024-08-03
B 2024-08-06 2024-08-10
C 2024-08-11 2024-08-31
我的代码中有一部分会每天进行迭代(从 2024-07-01 开始),并且我试图返回相应的Code
给定日期(如果日期不在任何 StartDate/EndDate 范围内,则返回回退)。
我最初的想法是做类似的事情:
DAYS = DAY_DF['Date'].tolist() # Just a list of each day
for DAY in DAYS:
code = False
for i,r in df.iterrows():
if r['StartDate'] <= DAY <= r['EndDate']:
code = r['Code']
break
if not code: # `Code` is still False
code = 'Fallback_Code'
但是,对数据框中的每一行进行迭代似乎非常低效,特别是因为我的数据框中有很多记录。
以下是一些示例输入和最终的代码输出:
2024-07-03 -> 'A'
2024-08-04 -> 'Fallback_Code'
2024-08-10 -> 'B'
2024-08-11 -> 'C'