#python #pandas
Вопрос:
У меня есть большой фрейм данных (называемый df), который содержит некоторые значения для местоположений. Это сокращенная версия:
locations Value1 Value2 Value3 Value4 0 s-Hertogenbosch 58 2 91 23 1 Aachen 10 2 17 8 2 Aalsmeer 50 50 50 0
Более того, у меня есть список(называемый списком), содержащий 50 местоположений; некоторые из этих местоположений отображаются во фрейме данных, а некоторые нет. Для каждого местоположения в «Списке» я хочу найти значение 1, соответствующее этому местоположению. Я делаю это, сопоставляя местоположения «списка» и фрейма данных со следующим кодом:
p=[] for y in range(50): p.append(df.loc[df['locations'] == List['Location'][y], 'Value1'].item())
Для простоты я сначала создаю вектор p, в котором хранится значение 1 каждого местоположения. Этот код работает, когда местоположение, указанное в списке, также можно найти во фрейме данных. Однако. если местоположение, указанное в списке, не может быть найдено в кадре данных, я получаю сообщение об ошибке. Я хотел бы принять значение для этих случаев. Кто-нибудь знает, как это закодировать?
Комментарии:
1. Ты имеешь в виду
df.loc[df["locations"].isin(other_location_list), "Value1"]
?
Ответ №1:
Попробуйте это (я привел простой пример):
import pandas as pd locations = ['s-Hertogenbosch', 'Aachen', 'Aalsmeer'] v1 = [58, 10, 50] v2 = [2, 2, 50] v3 = [91, 17, 50] v4 = [23, 8, 0] df = pd.DataFrame(locations, columns=['locations']) df['Value1'] = v1 df['Value2'] = v2 df['Value3'] = v3 df['Value4'] = v4 list_with_locations = ['a', 'b', 'c', 'Aachen'] l = list(df[df['locations'].isin(list_with_locations)].Value1) print(l)
Комментарии:
1. примите и поддержите этот ответ, если это помогло