2017-03-03 15 views
0

このコードは、取得したデータ量の15倍を取得します。それが実行されると、初めてforループに入り、答えを出力しますが、2回目の "for num in range(0,15):"ループでループすると、ループします"for df in page:"に挿入してから、他のループに深く入り込まず、 "page_counter"を200だけインクリメントします。Pythonはループを1回実行するだけでネストされ、残りの繰り返しはスキップされます

"for num in range(0,15):"ループのたびに最終的なネストされたforループを実行するにはどうすればよいですか?

import pandas as pd 

symbol = 0 
for num in range(symbol,1): 
    page_counter =0 
    right = 1 
    down = 0 
    for num in range(0,15): 
     page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan+1%2C+2005&enddate=Mar+2%2C+2017&num=200&ei=Aom4WPizNcWO2AaSnZ3YBg'+ str(page_counter), attrs = {'class': 'gf-table'}, header=0) 

     for df in page: 
      for num in range(down,200): 
       open_data = df.at[down, 'Open'] 
       high_data = df.at[down, 'High'] 
       low_data = df.at[down, 'Low'] 
       close_data = df.at[down, 'Close'] 
       #volume_data = df.at[down, 'Volume'] 

       print(open_data) 

       down += 1 
     page_counter += 200 
     print(page_counter) 
     symbol += 1 

P.S.私のコードはちょっとジャッキーなことが分かっていますが、これは私が持っていた簡単なアイデアです。

+1

ループの内側と外側の両方で同じ 'num'変数を使用しています。ループごとに異なる変数名を使用することができます。 – AKS

答えて

2

ので、このループはfor num in range(down,200):範囲の条件を満たしていない= 200をダウンを実行した後、第一for num in range(0,15):

内= 0のダウンを宣言します。

import pandas as pd 

symbol = 0 
for num in range(symbol,1): 
    page_counter =0 
    right = 1 
    for num in range(0,15): 
     down = 0 
     page = pd.read_html('https://www.google.com/finance/historical?q=a&startdate=Jan+1%2C+2005&enddate=Mar+2%2C+2017&num=200&ei=Aom4WPizNcWO2AaSnZ3YBg'+ str(page_counter), attrs = {'class': 'gf-table'}, header=0) 

     for df in page: 
      for num in range(down,200): 
       open_data = df.at[down, 'Open'] 
       high_data = df.at[down, 'High'] 
       low_data = df.at[down, 'Low'] 
       close_data = df.at[down, 'Close'] 
       #volume_data = df.at[down, 'Volume'] 

       print(open_data) 

       down += 1 
     page_counter += 200 
     print(page_counter) 
     symbol += 1 
+0

私の実際のコードでは、Excelシートの特定のセルに書き込んでいるため、下位= 0が上になければなりません。したがって、セルは単に上書きされます。ありがとうございます –

+0

@AlexBorland 'num for range(down、200):'これはあなたのコードで一度だけ実行されるか、別の変数を使うことができます。 –

+0

初めて私が試みたのはうまくいきませんでした。私はそれらのすべてを変えなかったからです。それは後に働いた。ありがとう –

関連する問題