我正在尝试创建一个涉及Pandas / Python和Excel文件的循环。有问题的专栏名为" ITERATION"它的编号范围是1到6.我试图在以下迭代范围内查询Excel文件中的命中数:
我已经制作了一个名为" 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"。我尝试过其他方式,例如:
有人有任何建议吗?
修改
在查看了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']
答案 0 :(得分:1)
只关注从字符串列表中获取值,这对我有用(尽管 - 一如既往 - 可能有更多的Pythonic方法):
lst = ['1,2','3','4,5,6']
for item in lst:
items = item.split(',')
for _ in items:
print int(_)
虽然不是最后打印,但您可以将值传递给脚本。
如果您的所有字符串都是单个数字或用逗号分隔的数字,这将有效。如果数据的格式一致,则可能需要调整此代码。