Python 需要帮助在数据帧上迭代以仅获取日期吗

Python 需要帮助在数据帧上迭代以仅获取日期吗,python,pandas,datetime,python-datetime,Python,Pandas,Datetime,Python Datetime,我有一个pandas数据框date_win,它是从sqlite3查询创建的。看起来是这样的: 0 0 2011-01-29 1 2011-03-19 2 2011-05-07 3 2011-02-19 4 2011-03-12 5 2011-01-22 6 2011-04-17 我想对它进行迭代以获得日期,转换为unix并将其放入Dark Sky api中。当我获取日期并将其分配给变量并将其放入日期时间转换时,错误为: ValueError

我有一个pandas数据框date_win,它是从sqlite3查询创建的。看起来是这样的:

             0
0   2011-01-29
1   2011-03-19
2   2011-05-07
3   2011-02-19
4   2011-03-12
5   2011-01-22
6   2011-04-17
我想对它进行迭代以获得日期,转换为unix并将其放入Dark Sky api中。当我获取日期并将其分配给变量并将其放入日期时间转换时,错误为:

ValueError:时间数据“0 2011-01-29\n名称:0,数据类型:对象”与格式“%Y-%m-%d”不匹配

我已尝试使用此for循环:
范围内的i(0,len(date\u win)):

以及:
对于i in date\u win:

以下是我的完整代码片段:

范围内的i(0,len(date_win)):
s=str(日期为[i])
dt=round(time.mktime(datetime.datetime.strtime,“%Y-%m-%d”).timetuple())
dt=str(dt)
resp=requests.get('https://api.darksky.net/forecast/[我的钥匙]/52.52,13.4050,'+dt)
data=resp.json()
打印(数据[“当前”][“摘要”])
以下是错误代码:

ValueError:时间数据“0 2011-01-29\n名称:0,数据类型:对象”与格式“%Y-%m-%d”不匹配


如果我在api请求中使用
s=“2011-01-01”
或硬代码,则api调用可以工作。我只是没有正确地进行迭代。

您可以使用

e、 g

通过在系列中使用
.values
日期将是一个格式化字符串的普通python列表,然后您可以正常循环并将其应用于API

如果希望将字符串保留在数据帧中,则只需分配另一列即可

df['formatted'] = df['dates'].dt.strftime('%Y-%m-%d')

值得注意的是,您可以使用或类似于在数据帧上循环。

请正确设置代码格式并正确设置示例数据格式。谢谢您的快速响应。我尝试了您的代码建议,并使用了“for”循环-这次没有错误,但所有日期都显示为“NaT”。我认为您的日期可能不会存储为数据框中的
datetime
对象。您是否已将pd.to_datetime
函数添加为我代码的第二行?确保将输出保存到要导出的列中。要检查数据框列的数据类型,可以
打印(df.dtypes)
。它们应该类似于
datetime64[ns]
。是的。我做到了。我正在使用sqlite3,这可能是问题的一部分吗(是否支持datetime对象?)?我已经请了一位讲师查看我的代码,并帮助我解决这个问题以及我遇到的另一个问题。如果我弄明白了,我会发布我的更新。非常感谢.sqlite绝对支持
datetime
-无论如何,您已经在pandas对象中拥有了数据,因此您应该能够转换为您想要的pandas支持的任何对象类型。只需仔细检查所有列引用,并在所有阶段打印出数据框和df.dtypes,以检查是否遗漏任何内容。如果你明白了,就告诉我!
df['formatted'] = df['dates'].dt.strftime('%Y-%m-%d')