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:循环遍历数字列表的主要内容,如果未能解决你的问题,请参考以下文章

通过遍历列表为 pandas 列赋值

Python为啥不能用列表遍历来删除列表中的相同的元素呢?

循环遍历 pandas 列名以创建列表

Pandas循环遍历数据帧并使用while循环列表

循环遍历 pandas 数据框列中的列表元素以在新列中返回列表

python列表的遍历与循环