我有一个奇怪的交互需要帮助。基本上:
1) 我创建了一个包含 1179 行 x 6 列的 Pandas 数据框。一列是街道名称,相同的值将有多个重复项(因为每行代表一个点,每个点都与一条街道相关联)。
2) 我还有这个 Pandas 数据框中所有街道的列表。
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: []
等等……
我不知道为什么。有人有想法吗?
谢谢
最佳答案
我认为问题出在这一行:
print(sub_df[sub_df.AQROUTES_3 =="'"+str(x)+"'"])
对于每个 names
,您在开头和结尾添加不必要的引号字符,以便街道的每个有效名称(在您的示例中 'AvenueMermoz'
变成 "'AvenueMermoz'"
我们必须使用双引号将单引号字符串括起来)。
正如@busybear 所评论的那样 - 也没有必要强制转换为 str
。因此,更正后的行将是:
print(sub_df[sub_df.AQROUTES_3 == x])
关于python - Pandas - 在循环中迭代索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55028346/