#python #pandas #loops
#python #pandas #циклы
Вопрос:
У меня странное взаимодействие, с которым мне нужна помощь. В основном :
1) Я создал фрейм данных pandas, который содержит 1179 строк x 6 столбцов. Один столбец — это названия улиц, и одно и то же значение будет иметь несколько дубликатов (потому что каждая строка представляет точку, и каждая точка связана с улицей).
2) У меня также есть список всех улиц в этом фрейме данных panda.
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: []
и так далее…
Я не могу понять, почему. У кого-нибудь есть идея?
Спасибо
Комментарии:
1. Вам не нужно добавлять кавычки здесь:
sub_df[sub_df.AQROUTES_3 =="'" str(x) "'"]
. Это позволило бы искать строку с фактическими кавычками в строке. Вероятно, вам также не нужно приводить его к строке, поскольку я полагаю, что это уже строка.
Ответ №1:
Я считаю, что проблема в этой строке:
print(sub_df[sub_df.AQROUTES_3 =="'" str(x) "'"])
К каждому из них names
вы добавляете ненужные символы кавычек в начале и в конце, так что каждое допустимое название улицы 'AvenueMermoz'
превращается в "'AvenueMermoz'"
, где нам пришлось использовать двойные кавычки, чтобы заключить строку в одинарные кавычки).
Как прокомментировал @busybear — также нет необходимости приводить к str
. Итак, исправленная строка будет:
print(sub_df[sub_df.AQROUTES_3 == x])
Ответ №2:
Итак, вы добавляете кавычки к фильтру, чего не следует. теперь вы фильтруете по ‘AvenueMermoz’, в то время как вы просто хотите фильтровать по AvenueMermoz .
итак
print(sub_df[sub_df.AQROUTES_3 =="'" str(x) "'"])
должно стать
print(sub_df[sub_df.AQROUTES_3 ==str(x)])