【发布时间】:2016-05-03 09:47:51
【问题描述】:
我正在尝试创建一个涉及 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
上面的 sn-p 只适用于数字“3”。其他 2 个场景似乎不起作用,因为它实际上是在搜索字符串“1,2”。我尝试了其他方法,例如:
- iteration_list = [1:2, 3, 4:6]
- iteration_list = [{1:2}, 3, {4:6}] 无济于事。
有人有什么建议吗?
编辑
查看 Stidgeon 的答案后,我似乎想出了以下替代方案。 Stidgeon 的答案确实提供了一个输出,但不是我正在寻找的那个(它提供了 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']
【问题讨论】:
标签: python excel list loops pandas