使用Pandas引用下一行值

时间:2017-07-13 13:09:16

标签: python excel python-3.x pandas

我正在编写一个脚本来填写表单,并希望引用Excel电子表格(一列)中的数据来填写重复出现的字段。

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文件包含一个名为“Application”的文本列,其中包含超过300行:

应用|

| APPNAME1 |

| Appname2 |

| Appname3 |

问题

我想在遇到如下表单字段时逐个引用每个'Appname'(我使用selenium来完成此操作):

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

除了每次都输入文本'AppnameX',我会调用下一行值。这可能吗?

2 个答案:

答案 0 :(得分: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是一个返回(index,item)对的生成器,使用[1]索引访问item部分。

答案 1 :(得分:0)

IIUC你可以这样做:

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