Как проверить значение в каком столбце в dataframe

#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"]