Python / Pandas:循环遍历数字列表

时间:2016-01-26 17:51:04

标签: python excel list loops pandas

我正在尝试创建一个涉及Pandas / Python和Excel文件的循环。有问题的专栏名为" ITERATION"它的编号范围是1到6.我试图在以下迭代范围内查询Excel文件中的命中数:

  • 1至2
  • 3
  • 4至6

我已经制作了一个名为" df"的预设数据框。

iteration_list = ["1,2", "3", "4,5,6"]
i = 1
for k in iteration_list:
    table = df.query('STATUS == ["Sold", "Refunded"]')
    table["ITERATION"] = table["ITERATION"].apply(str)
    table = table.query('ITERATION == ["%s"]' % k)
    table = pd.pivot_table(table, columns=["Month"], values=["ID"], aggfunc=len)
    table.to_excel(writer, startrow = i)
    i = i + 3

上面的代码段仅适用于数字" 3"。其他两种情况似乎不起作用,因为它字面上搜索字符串" 1,2"。我尝试过其他方式,例如:

  • iteration_list = [1:2,3,4:6]
  • iteration_list = [{1:2},3,{4:6}] 无济于事。

有人有任何建议吗?

修改

在查看了Stidgeon的回答后,我似乎想出了以下替代方案。 Stidgeon的回答DOES提供输出但不是我想要的输出(它提供6个输出 - 从每个循环中的迭代1到6)。

上面,我的清单如下:

iteration_list = ["1,2", "3", "4,5,6"]

如果您使用引号,您可以输入您想要的内容。由于你的字符串实际上将被输入到%s为:

的行中
table = table.query('ITERATION == ["%s"]' % k)

您基本上可以使用列表来满足您的精确需求和报价。这是一个可行的解决方案:

list = ['1", "2', 3, '4", "5", "6']

1 个答案:

答案 0 :(得分:1)

只关注从字符串列表中获取值,这对我有用(尽管 - 一如既往 - 可能有更多的Pythonic方法):

lst = ['1,2','3','4,5,6']

for item in lst:
    items = item.split(',')
    for _ in items:
        print int(_)

虽然不是最后打印,但您可以将值传递给脚本。

如果您的所有字符串都是单个数字或用逗号分隔的数字,这将有效。如果数据的格式一致,则可能需要调整此代码。