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都是单个数字或用逗号分隔的数字,这将工作。 如果数据的格式一致,则可能需要调整此代码。