Панды сравнивают значения 1 столбца с другим столбцом данных, находят совпадающие строки
У меня есть база данных, которую я добавляю в таблицу событий и аварийных сигналов SQL (df1), и у меня есть txt-файл кодов аварийных сигналов и свойств (df2), которые нужно отслеживать. Хотите использовать значения из 1 столбца из df2, для которых каждое значение необходимо перепроверять по отношению ко всем значениям столбца в df1, и выводить все строки любого из них, которые соответствуют, в другой кадр данных df3.
df1 A B C D
0 100 20 1 1
1 101 30 1 1
2 102 21 2 3
3 103 15 2 3
4 104 40 2 3
df2 0 1 2 3 4
0 21 2 2 3 3
1 40 0 NaN NaN NaN
Выведите целые строки из df1, в которых столбец B соответствует любому из значений столбца 0 df2, в df3.
df3 A B C D
0 102 21 2 3
1 104 40 2 3
Я смог получить отдельные результаты, используя:
df1[df1['B'] == df2.iloc[0,0]]
Но мне нужно что-то, что сделает это в большем масштабе.
1 ответ
Способ 1: merge
Используйте слияние, на B
а также 0
, Затем выберите только df1
столбцы
df1.merge(df2, left_on='B', right_on='0')[df1.columns]
A B C D
0 102 21 2 3
1 104 40 2 3
Способ 2: loc
Альтернативно использовать loc
найти строки в df1
где B
есть совпадение в df2
колонка 0
с помощью .isin
:
df1.loc[df1.B.isin(df2['0'])]
A B C D
2 102 21 2 3
4 104 40 2 3