Python / Pandas:循环访问数字列表

我正在尝试创build一个包含Pandas / Python和Excel文件的循环。 有问题的列被命名为“ITERATION”,它的数字范围从1到6.我试图在以下迭代范围中查询Excel文件中的点击次数:

  • 1到2
  • 3
  • 4至6

我已经创build了一个名为“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”。 另外两种情况似乎不起作用,因为它直接searchstring“1,2”。 我试过其他的方法,比如:

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

有没有人有什么build议?

编辑

在看完Stidgeon的回答之后,我似乎想出了以下的select。 Stidgeon的答案提供了一个输出,但不是我正在寻找的输出(它提供了6个输出 – 每个循环从迭代1到6)。

以上,我的名单如下:

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

如果你玩弄引号,你可以input你想要的东西。 由于你的string是从字面上input到这行%s是:

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

你基本上可以用清单来玩弄你的确切需求和报价。 这是一个可以工作的解决scheme:

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

只要专注于从string列表中获取值,这对我很有用(虽然 – 一如既往 – 可能会有更多的Pythonic方法):

 lst = ['1,2','3','4,5,6'] for item in lst: items = item.split(',') for _ in items: print int(_) 

尽pipe不是最后打印,但可以将值传递给脚本。

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