проверить наличие значения на другом Датафрейме - PullRequest
1 голос
/ 31 марта 2019

У меня есть два фрейма данных F1 и F2, содержащие оба столбца id1, id2.

F1 содержит два столбца F1[id1,id2].
F2 содержит три столбца [id1, id2, Description] Я хочупроверить, существует ли F2['id1'] в F1['id1'] ИЛИ F2 ['id2'] exists in F1 ['id2'], тогда я должен добавить colmun в F1 с описанием этого id1 или id2 в F2`.Содержание F1 и F2 ЗДЕСЬ .Выходные данные, которые присутствуют на F1, также ЗДЕСЬ Я создал F1 и F2 как этот

     F1 = {'id1': ['x22', 'x13','NaN','x421'],'id2':['NaN','223','788','NaN']}
     F1 = pd.DataFrame(data=F1)
     F2 = {'id1': ['x22', 'NaN','NaN','x413','x421'],'id2':['NaN','223','788','NaN','233'],'Description':['California','LA','NY','Havnover','Munich']}
     F2 = pd.DataFrame(data=F2)

На самом деле я попробовал несколько решений.Но ничто не помогает мне сделать это.Помогите пожалуйста

1 Ответ

0 голосов
/ 31 марта 2019

Использование:

#if necessary replace string NaN to missing values
F1 = F1.replace('NaN', np.nan)
F2 = F2.replace('NaN', np.nan)

Для каждого столбца удалите дубликаты по DataFrame.drop_duplicates, пропустите valeus по DataFrame.dropna и создайте индекс по id столбцу по DataFrame.set_index:

s1 = F2.drop_duplicates('id1').dropna(subset=['id1']).set_index('id1')['Description']
s2 = F2.drop_duplicates('id2').dropna(subset=['id2']).set_index('id2')['Description']

Затем используйте Series.map по столбцам из F1 с Series.combine_first:

F1['Description'] = F1['id1'].map(s1).combine_first(F1['id2'].map(s2))
print (F1)
    id1  id2 Description
0   x22  NaN  California
1   x13  223          LA
2   NaN  788          NY
3  x421  NaN      Munich
...