基于数值范围的Python for循环

时间:2018-10-18 13:36:03

标签: python

我的csv文件具有这样的数据

Zip     Population
00601   700
00602   1000
33112   12000
67890   90000

用于读取我编写的csv文件

import pandas as pd
pop_by_zip = pd.read_csv('population_census.csv',delimiter="|")

如果人口在(0,1000)之间,我想做10次

for row in popzip:
    if(0> popzip['Population'] <= 1000)
            for x in range(10)
    if(0> popzip['Population'] <= 10000)
            for x in range(70)

这是我的问题,我想在条件指定的人口范围内过滤邮政编码和人口。

1 个答案:

答案 0 :(得分:1)

这里有几个问题。第一个也是最明显的一点是,如果循环通过了要运行10次的检查,则保证循环运行20次,因为两者都检查popzip['Population'] > 0。您还将检查循环不变式放在错误的位置。而且,正如评论中指出的那样,您应该执行0 < x <= 10000 < x <= 10000。最后,我不确定您说要“循环x次”的意思。您是要运行整个for循环x次还是要遍历前x个元素?

population = popzip['Population']
end = 0
if (0 < population <= 1000):
    end = 10
elif (1000 < population <= 10000):
    end = 20
else:
    # some third thing?

for row in popzip[:end]:
    # rest of your code

这是如何工作的:您在开始循环之前先检查值(节省重复检查),然后根据需要取前10或20个元素。