[英]Iterate over a numpy array of dates
我正在嘗試迭代從Pandas數據框中提取的日期范圍; 下面的示例。
下面的代碼最初引發以下錯誤
TypeError:“ numpy.datetime64”對象不可迭代
r1 = pd.read_sql("select * from myTable",conn)
...
dates = np.sort(r1['date'].unique())
for i, d in dates:
z_d = z[z['date']==d]
r1_d = r1[r1['date']==d]
...
谷歌搜索后,我嘗試應用iditer
numpy方法,但這樣做會出現以下錯誤:
TypeError:在0維數組上迭代
r1 = pd.read_sql("select * from myTable",conn)
...
dates = np.sort(r1['date'].unique())
for i, d in np.nditer(dates):
z_d = z[z['date']==d]
r1_d = r1[r1['date']==d]
...
如何修改它以遍歷dates
變量中包含的dates
列表?
for d in dates
日期,依次將d
分配給每個日期; for i,d in dates
中的for i,d in dates
無效,因為您無法將單個日期值分配給兩個變量(它基本上是在嘗試執行i,d = dates[0]
等。)如果您還想要索引,Python不會它不會因為for
循環而免費提供給您; 您必須使用enumerate
函數在每個項目的索引前添加索引,然后遍歷該結果: for i,d in enumerate(dates):
幸運的是, enumerate
返回了一個懶惰的迭代器,因此效率很高。 它不會首先生成所有索引。 但是您將獲得與輸出相同的輸出,並且可以使用list(enumerate(dates))
看到該結果,該結果將返回類似[(0,'first-date'), (1, 'second-date'), ...]
。 因此,分配變為i, d = (0, 'first-date')
,依此類推,效果很好。
您的for循環有兩個變量,因此需要數組元素的兩個輸入。 錯誤是因為它試圖解析或迭代字符串。 更改為
for d in dates:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.