python / Pandas : Looping through a list of numbers

标签 python excel list loops pandas

我正在尝试创建一个涉及 Pandas/Python 和 Excel 文件的循环。有问题的列名为“迭代”,它的数字范围为 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

上面的代码片段仅适用于数字“3”。其他 2 个场景似乎不起作用,因为它从字面上搜索字符串“1,2”。我尝试过其他方法,例如:

  • 迭代列表 = [1:2, 3, 4:6]
  • 迭代列表 = [{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']

最佳答案

只专注于从字符串列表中获取值,这对我有用(尽管 - 一如既往 - 可能有更多 Pythonic 方法):

lst = ['1,2','3','4,5,6']

for item in lst:
    items = item.split(',')
    for _ in items:
        print int(_)

尽管您可以将值传递给脚本,而不是在最后打印。

如果您的所有字符串都是单个数字或以逗号分隔的数字,这将起作用。如果数据的格式始终如一,您可能需要调整此代码。

关于 python / Pandas : Looping through a list of numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35020483/

相关文章:

python - 通过 Alembic Sc​​eneGraph 重命名 ReadGeo 节点

c# - OpenXml 数据透视表 : how do you read the total and subtotals in order to display them?

python - 在列表中循环并将项目分配给新列表 - 有线行为

python - Py_Initialize后导入模块

python - 如何使用 Django 验证器将日期限制为 1900 或更长

excel - 如何设置共享默认文件夹的 Outlook 子文件夹?

excel - 在 Excel VBA 中,如何保存/恢复用户定义的过滤器?

c# - 主要: not all code paths return a value

c# - 存储通用对象的列表/字典

python - "ModuleNotFoundError : No module named ' API客户端' "