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

如何遍历DataFrame中的日期并拼接生成有效API请求URL?

解决DataFrame日期拼接URL时多余行信息的问题

问题描述

我尝试遍历DataFrame中字符串格式的日期,每次取两行作为起始和结束日期,拼接成URL后传入API。现有生成日期DataFrame的代码:

import pandas as pd
from datetime import date, timedelta

sdate = date(2023,1,1)   # start date
edate = date(2023,3,20)  # end date

df_dates=pd.date_range(sdate,edate-timedelta(days=1),freq='w')
df_dates=pd.DataFrame(df_dates)
print(type(df_dates))
print(df_dates.shape)
df_dates.columns = ['mydate']
df_dates['mydate']=df_dates['mydate'].astype(str)
print(df_dates.dtypes)
df_dates

执行URL拼接代码时:

url = "https://internal_api/assets?StartTime="+ str(row1) +"T12:00:12-04:00&EndTime="+ str(row2) +"T12:00:12-04:00"

生成的URL包含多余的DataFrame行信息:

https://internal_api/assets?StartTime=mydate    2023-03-12
Name: 10, dtype: objectT12:00:12-04:00&EndTime=mydate    2023-03-19
Name: 11, dtype: objectT12:00:12-04:00

需要的标准格式URL:

"https://internal_api/assets?startTime=2023-03-12T14%3A00%3A12-04%3A00&endTime=2023-03-19T14%3A00%3A12-04%3A00"

解决方案

问题出在直接把DataFrame的行对象(row1、row2)转成字符串,这会输出整行的元数据(包括列名、索引、数据类型)。需要提取行中mydate列的纯字符串值,同时对URL参数进行编码处理特殊字符。

修改后的完整代码示例

import pandas as pd
from datetime import date, timedelta
from urllib.parse import quote

# 生成日期DataFrame
sdate = date(2023,1,1)   # start date
edate = date(2023,3,20)  # end date

df_dates=pd.date_range(sdate,edate-timedelta(days=1),freq='w')
df_dates=pd.DataFrame(df_dates, columns=['mydate'])
df_dates['mydate']=df_dates['mydate'].astype(str)

# 遍历相邻两行生成标准URL
for i in range(len(df_dates)-1):
    # 精准提取起止日期的纯字符串值
    start_date_str = df_dates.iloc[i]['mydate']
    end_date_str = df_dates.iloc[i+1]['mydate']
    
    # 拼接时间部分并进行URL编码,处理特殊字符
    start_time = quote(f"{start_date_str}T12:00:12-04:00")
    end_time = quote(f"{end_date_str}T12:00:12-04:00")
    
    # 用f-string拼接最终URL
    url = f"https://internal_api/assets?startTime={start_time}&endTime={end_time}"
    print(url)

关键说明

  • 使用df_dates.iloc[i]['mydate']可以直接获取第i行mydate列的纯日期字符串,避免行对象转字符串带来的冗余信息。
  • urllib.parse.quote会自动将URL中的特殊字符(如:)转义为百分号编码(比如:转成%3A),完全符合标准URL格式要求。
  • f-string拼接方式比传统字符串拼接更简洁,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:39