python - Pandas - 在循环中迭代索引

标签 python pandas loops

我有一个奇怪的交互需要帮助。基本上:

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/

相关文章:

Java 程序停止运行,然后在到达循环时停止

java - 为什么我的数字在前 100000 个方格中的结果是负数?

python - 使用 Pandas 写入文件会产生空行

python - 字数列表无法重命名列名称

python - Pandas 用新值更新数据框行

python - 将具有属性的 python 对象转换为字典

javascript - 我在这个 javascript 循环操作中做错了什么?

python - Pandas:从数据框的行中获取标签并将其转换为列名

python - 来自 WB WDI 数据的 Pandas DataFrame : combine year columns into "year" variable and merge rows

python - Python 单元测试 - 为什么创建一个类?