#python #pandas #dataframe
#python #панды #dataframe
Вопрос:
У меня есть таблица адресов, подобная этой
City Area ID
AA BB 1
CC DD 2
EE FF 3
GG HH 4
Мне нужно извлечь идентификатор, когда я получу имя.
Однако я не знаю, что имя — это название города или название области.
Итак, я хочу использовать условную проверку имени в городе или области, а затем извлечь идентификатор
Я пробовал этот метод, но он не был запущен для меня.
Кстати, имя является строкой. Пример. name = «AA»
if name in df.City:
ID = df[df["City"] == name]["id"]
elif name in df.Area:
ID = df[df["Area"] == name]["id"]
Любое другое хорошее решение?
Комментарии:
1. Почему это не сработало?
2. Я голосую за закрытие вопроса, учитывая, что он недостаточно ясен и не содержит достаточно информации, чтобы сгенерировать MVE или понять ошибку и воспроизвести ее.
3. имя является строкой, и оно не может выполняться.
Ответ №1:
Попробуйте этот способ:
.values
выдаст вам массив, поэтому ваш оператор if может быть true, но просто идентификатор вернет объект серии — я думаю, вам нужно только число 1 или 2 … поэтому, если вы возьмете .max()
, это даст вам номер также, если вы передадите имя, которого там нет, оно будетпустой объект и не должен завершаться сбоем (в отличие от того, с чем вы это делали iloc
)
if name in df.City.values:
ID = df[df["City"] == name]["id"].max()
elif name in df.Area.values:
ID = df[df["Area"] == name]["id" ].max()
Ответ №2:
Вы используете query
вот так:
df.query("City==@name or Area==@name")["ID"]