熊猫-循环遍历索引

时间:2019-03-06 16:54:47

标签: python pandas loops

我有一个怪异的互动,需要帮助。基本上:

1) 我创建了一个熊猫数据框,其中包含1179行x 6列。一栏是街道名称,相同的值将具有多个重复项(因为每一行代表一个点,并且每个点都与一条街道关联)。

2) 我还有这个熊猫数据框中所有街道的列表。

3)如果运行此行,则会得到与该街道名称匹配的所有行的输出:

print(sub_df[sub_df.AQROUTES_3=='AvenueMermoz'])

结果:

       FID    AQROUTES_3 ...      BEARING E_ID
983    983  AvenueMermoz ...   288.058014     
984    984  AvenueMermoz ...   288.058014     
992    992  AvenueMermoz ...   288.058014     
1005  1005  AvenueMermoz ...   288.058014     
1038  1038  AvenueMermoz ...   288.058014     
1019  1019  AvenueMermoz ...   288.058014 

但是,如果我以列表的字符串作为街道名称在循环中运行此命令,它将返回一个空的数据框:

x=()
for names in pd_streetlist:
    print(names)
    x=names
    print(sub_df[sub_df.AQROUTES_3 =="'"+str(x)+"'"])
    x=()

返回:

RangSaint_Joseph
Empty DataFrame
Columns: [FID, AQROUTES_3, X, Y, BEARING, E_ID]
Index: []
AvenueAugustin
Empty DataFrame
Columns: [FID, AQROUTES_3, X, Y, BEARING, E_ID]
Index: []

以此类推...

我不知道为什么。有人有主意吗?

谢谢

2 个答案:

答案 0 :(得分:1)

我认为问题出在这一行:

print(sub_df[sub_df.AQROUTES_3 =="'"+str(x)+"'"])

在每个names的开头和结尾处都不必要添加引号,这样街道的每个有效名称(在您的示例中,'AvenueMermoz'就会变成"'AvenueMermoz'",使用双引号将单引号引起来的字符串括起来)。

正如@busybear所评论的那样-也无需强制转换为str。因此,更正的行将是:

print(sub_df[sub_df.AQROUTES_3 == x])

答案 1 :(得分:0)

因此,您将引号添加到不应使用的过滤器中。现在,您只想在AvenueMermoz上进行过滤,就可以在“ AvenueMermoz”上进行过滤。

如此

print(sub_df[sub_df.AQROUTES_3 =="'"+str(x)+"'"])

应成为

print(sub_df[sub_df.AQROUTES_3 ==str(x)])