簡體   English   中英

迭代數個日期數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM