2017-07-13 42 views
1

我正在編寫一個腳本來填寫表單,並希望從Excel電子表格(一列)中引用數據以填充重複出現的字段。使用Pandas引用下一行值

import pandas as pd 

file = 'File Path Here' 

xl = pd.ExcelFile(file) 

df = pd.read_excel(file, 'Sheet1', index_col=None) 

num = 1 

li = [(df.iloc[0,0])] 


def next_app(): 
    for num, elem in enumerate(li): 
     thiselem = elem 
     nextelem = li[(num + 1) % len(li)] 
     print(nextelem) 

next_app() 

這顯然打印 1的價值,但我不知道如何調用每一行的值後的下一個每當我需要。我確信在for循環中有錯誤,或者我甚至需要一個for循環,但我不確定如何糾正這個錯誤。

Excel文件包含一個名爲 '應用程序' 一隻列有超過300行:

|應用|

| Appname1 |

| Appname2 |

| Appname3 |

等等

問題

我想通過一個引用每個「APPNAME」一個跨表單字段來像下面(我使用硒來完成此)時:

name = browser.find_element_by_id('slpt-createappdialog-app-name-inputEl') 
name.send_keys('Appname3') 

除了每次輸入文本'AppnameX'之外,我都會調用下一行值。這可能嗎?

回答

1

你也可以遍歷列表中的所有應用程序使用:

for app in df['application']: 
    name.send_keys(app) 

,或者如果你有單獨的語句創建一個循環,那麼你可以通過使用發電機每次得到列表中的下應用:

apps = df['application'].iteritems() 

for i in range(5): 
    print(next(apps)[1]) 
print(next(apps)[1]) 
print(next(apps)[1]) 

這裏Apps是一臺發電機返回一個(索引,項目)對,項目部分用[1]索引訪問。

+0

發電機,這是我無法表達。這就是我想要完成的。作爲一個後續,如果我參考下一個應用程序,但我想不止一次使用該值,然後再轉到下一個項目上,有一種方法可以在寫入之前添加一些內容以保留值(next(apps)[ 1])? – nvachhan

+1

當然,你可以寫'a =(next(apps)[1])',然後使用'a'直到你需要下一個值。如果答案有幫助,您能否將其標記爲「已接受」? –

0

IIUC你可以做這樣的事情:

for app in df['Application'].unique(): 
    # do your logic here ... 
    print(app) 
相關問題