Python / Pandas:循环遍历数字列表
Posted
技术标签:
【中文标题】Python / Pandas:循环遍历数字列表【英文标题】:Python / Pandas: Looping through a list of numbers 【发布时间】: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']
【问题讨论】:
【参考方案1】:只专注于从字符串列表中获取值,这对我有用(尽管 - 一如既往 - 可能有更多 Pythonic 方法):
lst = ['1,2','3','4,5,6']
for item in lst:
items = item.split(',')
for _ in items:
print int(_)
虽然不是在最后打印,但您可以将值传递给脚本。
如果您的所有字符串都是单个数字或用逗号分隔的数字,这将起作用。如果数据的格式始终如一,您可能需要调整此代码。
【讨论】:
以上是关于Python / Pandas:循环遍历数字列表的主要内容,如果未能解决你的问题,请参考以下文章