2017-07-13 10 views
1

フォームを記入するためのスクリプトを作成していますが、Excelスプレッドシート(​​1列)からデータを参照して再発フィールドを記入したいと考えています。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以上の行を持つ「アプリケーション」という名前の1つのテキスト列が含まれます。

を|アプリケーション|

| Appname1 |

| Appname2 |

| Appname3 |

(私はこれを達成するために、セレンを使用しています)次のようなフォームフィールドに出くわすとき、私は1つずつ「APPNAME」1を参照したい

問題:

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]) 

ここでアプリはジェネレータを使用してリストの次のアプリを取得できます(インデックス、アイテム)のペア​​を返し、アイテムパートは[1]インデックスでアクセスされます。

+0

ジェネレータは、私が明確に表現できなかったものです。これは私が達成しようとしていることをしています。フォローアップとして、次のアプリケーションを参照しているが、次のアイテムに移動する前にその値を2回以上使用したい場合は、書き込む前に値を「追加」する方法がある(次の(アプリケーション)[ 1])もう一度? – nvachhan

+1

確かに 'a =(next(apps)[1])'と書くだけで、次の値が必要になるまで 'a'を使うことができます。答えが助けられたら、「受け入れた」と記入できますか? –

0

IIUCあなたはこのような何かを行うことができます。

for app in df['Application'].unique(): 
    # do your logic here ... 
    print(app) 
関連する問題