У меня странное взаимодействие, с которым мне нужна помощь. В принципе :
1) Я создал фрейм данных pandas, который содержит 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: []
и так далее...
Я не могу понять, почему. У кого-нибудь есть идея?
Спасибо






Я считаю, что проблема в этой строке:
print(sub_df[sub_df.AQROUTES_3 = = "'"+str(x)+"'"])
К каждому names вы добавляете ненужные кавычки в начале и в конце, чтобы каждое допустимое название улицы (в вашем примере 'AvenueMermoz' превратилось в "'AvenueMermoz'", где мы должны были использовать двойные кавычки, чтобы заключить строку в одинарных кавычках).
Как прокомментировал @busybear, нет необходимости приводить к str. Таким образом, исправленная строка будет выглядеть так:
print(sub_df[sub_df.AQROUTES_3 == x])
Итак, вы добавляете кавычки в фильтр, чего не должны. теперь вы фильтруете по «Авеню Мермоз», а вам просто нужно фильтровать по «Авеню Мермоз».
так
print(sub_df[sub_df.AQROUTES_3 = = "'"+str(x)+"'"])
должен стать
print(sub_df[sub_df.AQROUTES_3 ==str(x)])
Здесь не нужно добавлять кавычки:
sub_df[sub_df.AQROUTES_3 = = "'"+str(x)+"'"]. Это будет искать строку с фактическими кавычками в строке. Вероятно, вам также не нужно приводить его к строке, так как я думаю, что это уже строка.