我有一个怪异的互动,需要帮助。基本上:
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: []
以此类推...
我不知道为什么。有人有主意吗?
谢谢
答案 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)])